我的模型索引页面上出现了一些奇怪的行为。当我创建一个模型对象时,它在索引页面上正确显示。当我创建第二个模型对象时,它会在索引页面上显示两个对象的重复项,如此
OBJECT A
OBJECT B
OBJECT A
OBJECT B
我已确认我的数据库中没有创建重复的对象。此外,当我摧毁OBJECT B时,它只能正确显示一次OBJECT A.
index.html.erb
<table class="table">
<thead>
<tr>
<th>Image</th>
<th>Name</th>
<th>Description</th>
<th>URL</th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<%= render @companies %>
</tbody>
</table>
_company.html.erb
<% @companies.each do |company| %>
<tr>
<td><%= image_tag company.image(:medium) %></td>
<td><%= company.name %></td>
<td><%= company.description %></td>
<td><%= company.url %></td>
<td><%= link_to 'Show', company %></td>
<td><%= link_to 'Edit', edit_company_path(company) %></td>
<td><%= link_to 'Destroy', company, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
companies_controller.rb
def index
@companies = Company.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @companies }
end
end
答案 0 :(得分:2)
将您的部分更改为,
<tr>
<td><%= image_tag company.image(:medium) %></td>
<td><%= company.name %></td>
<td><%= company.description %></td>
<td><%= company.url %></td>
<td><%= link_to 'Show', company %></td>
<td><%= link_to 'Edit', edit_company_path(company) %></td>
<td><%= link_to 'Destroy', company, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
您需要删除部分中的每个循环。
<%= render @companies %>
为每家公司提供部分内容,但您也会在每个公司中再次浏览公司。
请参阅http://guides.rubyonrails.org/layouts_and_rendering.html#rendering-collections上的 3.4.5渲染集合以获取更多信息
答案 1 :(得分:1)
将<%= render @companies %>
更改为<%= render "company" %>
;你的部分被渲染多次,每个公司一个,你的部分渲染所有公司。这只会渲染部分,这将呈现所有公司,这就是你想要的。