假设我有 UsersController#show
操作。它默认呈现 users/show.html.erb
。
现在,我还有 ProductsController#index
,它接收一个 Client
id 并显示一个表格,其中包含属于该客户的所有产品。它呈现 products/index.html.erb
。
我想在用户想要查看 UsersController#show
时显示此产品列表。以下是一些这样做的想法:
- 重定向
UsersController#show
到 ProductsController#index
;
- 在
UsersController#show
中渲染 products/index.html.erb
;
- 将
products/index.html.erb
复制到users/show.html.erb
。
但是,我觉得这些解决方案并不是完成我想做的事情的最佳解决方案。还有其他更好的选择吗?如果不是,我应该遵循以上哪一项?
为什么不在 UsersController 的 show 方法下传入与该用户相关的产品?你可以做类似的事情
def show
@products = Products.where(user_id: @user.id).paginate(:page => params[:page], :per_page => 3)
end
或者如果你正在使用我会做的设计
def show
@products = Products.where(user_id: current_user.id).paginate(:page => params[:page], :per_page => 3)
end
然后在前端你可以简单地通过调用来渲染它
为了进行分页,我使用了 will_paginate gem
我是一名优秀的程序员,十分优秀!