0

別のリソース内にネストされているリソースのカスタム コントローラー アクションシャッフルを呼び出そうとしています。メソッド呼び出しを正しく取得できないようです。

ルート.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

1

シャッフルを記述する最良の方法は、 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 に答える