我有以下列表:
<% @backgrounds.each do |background| %>
<tr>
<td><%= background.image.url %></td>
<td><%= link_to 'Show', background %></td>
<td><%= link_to 'Edit', edit_background_path(background) %></td>
</tr>
<% end %>
我正在尝试将其重用于其他控制器。这就是我到目前为止所做的:
<%= render partial:'image_listing', locals:{images:@backgrounds} %>
<% images.each do |image| %>
<tr>
<td><%= image.image.url %></td>
<td><%= link_to 'Show', image %></td>
<td><%= link_to 'Edit', edit_image_path(image) %></td>
</tr>
<% end %>
是否有更通用的edit_image_path版本?
答案 0 :(得分:2)
<%= render partial: "background", :collection => @backgrounds %>
# _background.html.erb
<tr>
<td><%= background.image.url %></td>
<td><%= link_to 'Show', background %></td>
<td><%= link_to 'Edit', edit_background_path(background) %></td>
</tr>
如果使用要迭代的对象的相同名称调用partial,则最短的形式为
<%= render @backgrounds %>
如果您无法遵循此约定,请使用:collection
和:partial
选项来指示呈现。
答案 1 :(得分:0)
edit_background_path的通用版本似乎是edit_polymorphic_path。这使得以下成为可能:
<%= render partial: 'image_listing', locals:{ images:@backgrounds } %>
<% images.each do |image| %>
<tr>
<td><img class='thumb' src='<%= image.image.url %>' /></td>
<td><%= link_to 'Show', image %></td>
<td><%= link_to 'Edit', edit_polymorphic_path(image) %></td>
<td><%= link_to 'Destroy', image, confirm: 'Are you sure?', method: :delete %></td>
</tr>
<% end %>