2010-04-26 17 views

Antwort

5

Da ist diese Methode:

>> ActionController::Routing::Routes.recognize_path("/posts/") 
=> {:action=>"index", :controller=>"posts"} 

Wenn Sie nur einen String mit der Route haben (wie "posts_path"), dann denke ich, im Kontext Sie dies verwenden, sollten Sie in der Lage sein, zu tun

ActionController::Routing::Routes.recognize_path(send("posts_path".to_sym)) 

btw dies war auch für mich zu erziehen :)

+0

ah Sie die meisten der Job selbst :) –

+1

Thx getan haben:) Was ist 'send (: post_path)'? – fl00r

+0

es ist wie Sie Methoden mit einem beliebigen Namen in Ruby aufrufen :) In diesem Fall, wenn Sie eine Zeichenfolge wie "posts_path" haben, und Sie möchten stattdessen den Wert von posts_path Methode erhalten, dann senden Sie einfach ("posts_path") '(Sie müssen nicht einmal in ein Symbol konvertieren). es ist ein Kernkonzept in Ruby, Sie sollten besser damit vertraut sein :) –

12

In Rails 3 können Sie folgendes tun:

Rails.application.routes.recognize_path "/accounts/1" 
# {:action=>"show", :controller=>"accounts", :id=>"1"} 

Verwenden gehalten ActionController::Routing::Routes.recognize_path

Action :: RoutingError Exception werfen: Keine Route matches „/ Konten/1

+0

Beachten Sie, dass dies auch funktioniert vollständige URLs: 'Rails.application.routes.recognose_path 'http: // example.com/accounts/1'' – tee