我有一个页面,我可以在其中查看产品,用户可以直接从该页面添加和删除与该产品关联的多个图像。我在表单中使用回形针上传新文件。
因为可以为一个产品保存多个图像,所以我创建了一个属于该产品模型的图像模型。由于关联的原因,无法使用默认的回形针文件输入。我下面的解决方案是有效的,但我想知道在rails中是否有更好的方法来完成这一点,而不是我为使其工作而破解的所有html。
class Image < ActiveRecord::Base
`belongs_to :product`class Product < ActiveRecord::Base
`has_many :images, :dependent => :destroy accepts_nested_attributes_for :images, :allow_destroy => true`show.html.erb
<% @product.images.build %>
<%= form_for(@product, :html => { :multipart => true }) do |f| %>
<input id="image" name="product[images_attributes][<%= @product.images.count %>][photo]" >size="30" type="file" onchange="this.form.submit();" />
<% end %>
发布于 2010-07-16 09:58:09
正如你很可能知道的,在你的控制器中,你可以用@product.images.build;构建一些空的文件输入,而在你的视图中,无论是编辑还是创建,你都可以这样做:
<% f.fields_for :images do |img| %>
<% if img.object.data_file_name %>
<%= image_tag img.object.data.url(:thumb) %>
<%= link_to 'Delete', img.object, {:method => :delete, :confirm => 'Are you sure?'} %>
<% else %>
<%= img.file_field :data %>
<% end %>
<% end %>这个特定的示例需要一个具有销毁操作的图像控制器,但即使图像是多态的,它也应该工作得相当好。
https://stackoverflow.com/questions/3260267
复制相似问题