在我的应用程序中,用户以品牌提交评论。这是关联:
class Brand < ActiveRecord::Base
has_many :reviews
class Review < ActiveRecord::Base
belongs_to :brand
现在我有一个部分定义来显示评论:
_showreview.html.erb
<% review.each do |review| %>
<div class="col-sm-4">
<div class="thumbnail">
<%= image_tag review.first_photo %>
<div class="caption">
<h4><%= link_to review.title, review %></h4>
<h6><strong><%= link_to ("WRITTEN BY " + review.user.username.upcase), review.user %></strong></h6>
<%= review.description.truncate_words(60, omission: '...') %>
<br>
<br>
<%= link_to review.brand.label, review.brand, :class => 'btn btn-sm btn-lake' %>
</div>
</div>
</div>
我通过在:
中传递一个实例变量来渲染它<%= render "showreview", review: @top_reviews %>
它按预期工作。
现在我希望重复使用partial for brands / show.html.erb
我现在要做的是检索属于某品牌的所有评论并进行展示。
show_controller.rb看起来像这样
def show
@brand = Brand.find(params[:id])
@reviews =Review.find(params[:id])
end
我尝试使用它,但它不起作用。这样做的正确方法是什么?
<%= render "/reviews/showreview", review: '@brand.reviews' %>
答案 0 :(得分:2)
<%= render "/reviews/showreview", review: @brand.reviews %>
但请将review
重命名为reviews
。这个变量的名称更方便。
答案 1 :(得分:0)
你的方法将是这样的
/**
并在您的视图中
def show
@brand = Brand.find(params[:id])
end
答案 2 :(得分:0)
首先,您应该使用多个来进行变量检查。
<%= render "reviews/showreview", review: @brand.reviews %>
它使您的代码可读性。
然后尝试放置评论:&#39; @ branch.review&#39;按reviews.each do |review|
并确保你从控制器传递变量@branch