0

我正在尝试为嵌套在另一个资源中的资源调用自定义控制器操作shuffle 。我似乎无法正确调用方法。

路线.rb

resources :templates do
  resources :items
end

match "/templates/:template_id/items/shuffle" => "items#shuffle"

我的 items#index 视图中有一个链接:

<%= 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) %>,但没有奏效。

如何正确调用此自定义操作?

4

3 回答 3

4

你可能想要这个:

resources :templates do
  resources :items do
    get :shuffle, :on => :collection
  end
end
于 2013-05-23T17:38:21.760 回答
1

如果您希望您的自定义操作有一个名称,您需要提供它:

match "/templates/:template_id/items/shuffle" => "items#shuffle", :as => :suffle_template_items
于 2013-05-23T17:37:13.347 回答
1

我认为编写 shuffle 的最佳方法是根据Rails Routes的文档收集:

所以它看起来像这样:

  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

于 2013-05-23T17:47:40.197 回答