【问题标题】:Rails Paperclip with model association具有模型关联的 Rails Paperclip
【发布时间】:2010-07-15 21:34:34
【问题描述】:

我有一个可以查看产品的页面,用户可以直接从该页面添加和删除与该产品关联的多个图像。我在表单中使用回形针上传新文件。

因为可以为一个产品保存多个图像,所以我创建了一个属于该产品模型的图像模型。由于关联,无法使用默认的回形针文件输入。我在下面的解决方案正在运行,但我想知道 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

&lt;% @product.images.build %&gt;
&lt;%= form_for(@product, :html =&gt; { :multipart =&gt; true }) do |f| %&gt;

&lt;input id="image" name="product[images_attributes][&lt;%= @product.images.count %&gt;][photo]" &gt;size="30" type="file" onchange="this.form.submit();" /&gt;

&lt;% end %&gt;

【问题讨论】:

    标签: ruby-on-rails forms associations paperclip


    【解决方案1】:

    您很可能知道,在您的控制器中,您可以使用 @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 %>
    

    这个特定的示例需要一个带有销毁操作的图像控制器,但它应该可以很好地工作,即使图像是多态的。

    【讨论】:

    • 谢谢,我两周前开始在 Rails 中编码,不知道 .object,现在这么简单!
    猜你喜欢
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多