有没有一种简单的方法将整个控制器路由到站点根目录?

时间:2013-09-23 20:53:32

标签: ruby-on-rails

我知道如何将页面路由到站点根目录,以及如何为每个页面和操作单独指定路由,但我觉得我有时会通过这样做为自己创建不必要的工作。是否可以使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

或者这是最好的方式?

1 个答案:

答案 0 :(得分:1)

你已经非常接近了:

controller :some_controller do
  get ":controller/:action"
end

:controller/:action会将:action段动态匹配到传递给controller方法的符号引用的控制器上的该名称的方法。

我在这里要小心安全。请注意控制器从其父类(可能是ApplicationController)继承的方法,因为可以使用此路由样式访问任何公共方法。