我有一个显示的供应商控制器:
def show
@vendor = Vendor.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @vendor }
end
end
在我的评论视图中(供应商:has_many评论)
<% if @vendor.reviews.empty? %>
No Analyst Reports yet
<% else %>
<% for review in @vendor.reviews %>
<%= review.user_id %>
<%= review.summary %><br />
<hr class="span-5" />
<% end %>
<% end %>
所以我基本上会针对特定供应商的所有评论进行'for'循环(这对我来说一直是一个棘手的概念,但似乎有效)。
所以:我想显示User.name和user.email。我知道每个相应评论的user_id是什么(review.user_id),但我不知道如何显示用户模型的值。
我认为使用find_by_id会起作用,但它无法识别用户。
帮助?
答案 0 :(得分:1)
如果您在Review模型和User模型之间设置了:has_one
关系,那么您只需使用review.user
即可访问它。因此,您可以获得review.user.name
,review.user.email
等用户属性
请注意,如果您要检索许多子记录以进行循环,则可能需要使用find
参数调用:include
以减少查询次数。类似的东西:
Vendor.find(params[:id], :include => { :reviews => :user } )
有关详细信息,请参阅API docs for has_one。