如何在rails中显示来自不同表的对象属性

时间:2014-05-27 18:45:32

标签: ruby-on-rails

如果我的术语不在这里,请道歉。

我有一个用户模型。我有一个产品模型。用户有许多产品和产品属于用户。

我正在尝试建立一个用户索引页面,其中显示所有用户及其相关产品,其中包含指向各个用户页面的链接。我的SHOW页面按预期运行,但我不知道如何在索引视图中显示用户的产品。

显示(此作品)

控制器

def show
  @user = User.find(params[:id])
  @product = @user.products
end

视图

<%= @user.name %>
<% if @user.products.any? %>
Product
<%= render @product %>
<% end %>

产品部分(上面引用)

Serial Number: <%= product.serial %>

INDEX(这不起作用)

控制器

def index
 @users = User.paginate(page: params[:page])
 @product = @users.product #trying to show
end

查看

我在这里不知所措。我认为有意义的东西对我不起作用。

我想做点什么

<%= user.product.serialnumber %>

<%= user.product.id %>

如何在视图中显示用户产品的属性?为什么它在我的SHOW动作/视图中部分工作,而不是在我的INDEX动作中?我必须使用部分?

1 个答案:

答案 0 :(得分:0)

对于您的索引操作,@users是用户的集合,而在您的节目@user中是单个用户对象。

当您说@users.product时,您在集合对象而不是用户对象上调用产品。因此,您需要做的是,在视图中迭代@users集合并在对象上调用产品

这样的东西
<% @users.each do |user| %>
  <%user.products.each do |product|%>
     <%= user.name%>
     <%= product.serialnumber%>
     <%= product.id%>
  <%end%>
<% end %>