本当に簡単なことをしようとしています-誰かが正しい呪文を提供してくれませんか?
基本的に、Biscuit
オプションでネストしてUser
いるため、次のようなルートが必要です。
/biscuits
/biscuits/1
/users/2/biscuits
/users/2/biscuits/3
等
リストをレンダリングするためにbiscuits/index
パーシャルを呼び出すようなビューがあります。biscuits/_index
ユーザーのプロファイル ビューからこれと同じパーシャルを呼び出したいのusers/edit
ですが、どの resource_url ヘルパーを使用すればよいかわかりません。
resources :users do
resources :biscuits
end
class BiscuitsController < InheritedResources::Base
belongs_to :user, optional: true
end
ユーザー/edit.html.haml:
= render 'biscuits/index', biscuits: @user.biscuits.all
ビスケット/_index.html.haml:
- biscuits.each do |biscuit|
%tr
%td= biscuit.title
%td= link_to image_tag(biscuit.file_url(:thumb,:large)), resource_url(biscuit)
%td
= link_to 'Show', resource_url(biscuit)
|
%td
= link_to 'Edit', edit_resource_url(biscuit)
このパーシャルは at から呼び出された場合は正常に動作しますが、BiscuitsController
atから呼び出された場合は/users/1/biscuits
爆発します--ビスケット コレクションではなく、ここでユーザーを参照しているようです。NoMethodError in Users#edit undefined method 'user_url' for #<UsersController>
UsersController
/users/1/edit
resource_url
現在のコントローラーに関係なく、リソース/コレクションを強制的にリソースのコレクションにするにはどうすればよいですか?
これを行うためのより良い方法は何ですか?
また、ルートがvia を呼び出した場合、 andをオーバーライドするUsersController#collection
と#resource
、これらのメソッドが呼び出されますか? それとも、Rails によってインスタンス化されるのは、リクエストごとに 1 つだけですか?UsersController
BiscuitsController
/users/1/biscuits
Controller