在Rails中调用操作时调用不同的操作

时间:2015-01-23 14:22:23

标签: ruby-on-rails ruby

说我有UsersController#show动作。它默认呈现users/show.html.erb

现在,我还有ProductsController#index,它会收到Client个ID,并显示一个包含属于该客户端的所有产品的表格。它呈现products/index.html.erb

我想在用户想要查看UsersController#show时显示此产品列表。以下是这样做的一些想法:

  • UsersController#show重定向到ProductsController#index;
  • products/index.html.erb;
  • 中渲染UsersController#show
  • products/index.html.erb复制到users/show.html.erb

但是,我觉得这些解决方案不是做我想做的最好的解决方案。还有其他更好的选择吗?如果没有,我应该遵循上述哪一项?

1 个答案:

答案 0 :(得分:0)

为什么不在show方法下的UsersController中传递与该用户相关的产品?你可以做点什么

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