我正在尝试为嵌套在另一个资源中的资源调用自定义控制器操作 shuffle 。我似乎无法正确调用方法。
的routes.rb
resources :templates do
resources :items
end
match "/templates/:template_id/items/shuffle" => "items#shuffle"
我的项目#index view中有一个链接:
<%= link_to 'Shuffle', shuffle_template_items_path(@template) %>
当我点击链接时,出现以下错误:
undefined method `shuffle_template_items_path' for #<#<Class:0x42577c8>:0x3e77578>
我也尝试了<%= link_to 'Shuffle', template_items_shuffle_path(@template) %>
,但是没有用。
如何正确调用此自定义操作?
答案 0 :(得分:4)
你可能想要这个:
resources :templates do
resources :items do
get :shuffle, :on => :collection
end
end
答案 1 :(得分:1)
如果您希望自定义操作具有名称,则需要提供该名称:
match "/templates/:template_id/items/shuffle" => "items#shuffle", :as => :suffle_template_items
答案 2 :(得分:1)
根据Rails Routes的文档,我认为编写shuffle的最佳方法是收集:
所以它看起来像这样:
resources :templates do
resources :items do
collection do
get :shuffle
end
end
end
当您尝试rake routes
时,您会找到shuffle_template_items GET /templates/:template_id/items/shuffle(.:format) items#shuffle
。