尝试做一些非常简单的事情——有人可以提供正确的咒语吗?
基本上我们可以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
无论当前控制器如何,我如何强制资源/集合成为任何资源集合?
有什么更好的方法来做到这一点?
另外,假设我们覆盖UsersController#collection
and ,如果路由调用via #resource
,这些方法是否在被调用?还是每个请求只有一个被 Rails 实例化?UsersController
BiscuitsController
/users/1/biscuits
Controller