Soo*_*uNe 15 routing ruby-on-rails
我明白如何将:controller,:action, :etc为URL.我正在寻找相反的方法,如何从URL中找到rails路由器将调用的操作?
小智 26
使用Rails 3,您可以:
Rails.application.routes.recognize_path('/areas/1')
=> {:controller=>"areas", :action=>"show", :id=>"1"}
Run Code Online (Sandbox Code Playgroud)
Geo*_*tte 13
其他人可能有更短的方法来做到这一点,但如果你只是评估一个URL,那么你去ActionController::Routing::RouteSet上课
为一个 config.routes.rb
map.resources :sessions
Run Code Online (Sandbox Code Playgroud)
要查找的代码是:
ActionController::Routing::Routes.recognize_path('/sessions/new', {:method => :get})
#=> {:controller => 'sessions', :action => 'new'}
Run Code Online (Sandbox Code Playgroud)
对:
ActionController::Routing::Routes.recognize_path('/sessions/1/edit', {:method => :get})
#=> {:controller => 'sessions', :action => 'edit', :id => 1}
Run Code Online (Sandbox Code Playgroud)
错了 - 没有method明确添加,它将默认匹配到/:controller/:action/:id:
ActionController::Routing::Routes.recognize_path('/sessions/1/edit')
#=> {:controller => 'sessions', :action => '1', :id => 'edit'}
Run Code Online (Sandbox Code Playgroud)
如果你在行动中并想知道,通过打电话会更容易 params[:action]
您可以在此处找到有关路由集的所有信息:http://caboo.se/doc//classes/ActionController/Routing/RouteSet.html#M004878
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
5097 次 |
| 最近记录: |