我知道如何将页面路由到站点根目录,以及如何为每个页面和操作单独指定路由,但我觉得我有时会通过这样做为自己创建不必要的工作。是否可以使example.com/method
始终等同于some_controller#method
?
类似的东西:
root "some_controller#index"
controller :some_controller do
get "/:method" => :method
end
而不是
root "some_controller#index"
controller :some_controller do
get "/" => :index, as: :index
get "/contact" => :contact, as: :contact
get "/photos" => :photos, as: :photos
...
end
或者这是最好的方式?
答案 0 :(得分:1)
你已经非常接近了:
controller :some_controller do
get ":controller/:action"
end
:controller/:action
会将:action
段动态匹配到传递给controller
方法的符号引用的控制器上的该名称的方法。
我在这里要小心安全。请注意控制器从其父类(可能是ApplicationController)继承的方法,因为可以使用此路由样式访问任何公共方法。