Rails路由 - 更短的非资源路由

时间:2017-06-29 19:04:37

标签: ruby-on-rails routes

我试图设置一些指向同一个控制器的铁路路线,让我们说" mycontroller"有3个动作,没有资源支持。这3个动作是GET,让我们称之为" action1"," action2"和" action3",所以我最终设置类似

的东西
get "mycontroller/action1" => "mycontroller#action1", as: :action1_mycontroller

每次行动一次。有没有办法做像

这样的事情
resourceless :mycontroller do
  get 'action1'
  get 'action2'
  get 'action3'
end

提前致谢。

1 个答案:

答案 0 :(得分:1)

如果您执行以下操作:

resources :my_controller, :only => [] do 
  collection do 
    get 'action1'
    get 'action2'
    get 'action3'
  end
end

然后在rake routes中,您会看到:

 action1_my_controller_index GET    /my_controller/action1(.:format)  my_controller#action1
 action2_my_controller_index GET    /my_controller/action2(.:format)  my_controller#action2
 action3_my_controller_index GET    /my_controller/action3(.:format)  my_controller#action3

我怀疑,您可以随意使用as:获取您喜欢的路径名称。

或者,如果你这样做(如你所说):

namespace :mycontroller do 
  get "action1" 
  get "action2" 
  get "action3" 
end

你得到:

    mycontroller_action1 GET    /mycontroller/action1(.:format)    mycontroller#action1
    mycontroller_action2 GET    /mycontroller/action2(.:format)    mycontroller#action2
    mycontroller_action3 GET    /mycontroller/action3(.:format)    mycontroller#action3

后者(你的)越多越好。