如何从此商家信息中创建部分商品?

时间:2011-11-21 13:44:04

标签: ruby-on-rails

我有以下列表:

<% @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版本?

2 个答案:

答案 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选项来指示呈现。

请参阅ActionView::Partials

答案 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 %>