【问题标题】:Rails with Paperclip ignore empty attachments带有回形针的 Rails 忽略空附件
【发布时间】:2013-09-12 12:34:38
【问题描述】:

我正在使用带有导轨的回形针,它工作正常,但是我的问题是,如果我不重新选择图像,则在更新时,它会将记录保存为 nil。这是我的代码:

<div class="form-group">
  <div class="media">
    <%= image_tag program_avatar(b), :id => 'avatar', :class => 'thumbnail media-object pull-left', :height => 100, :width => 100 %>
    <div class="media-body padding-top-40">
      <%= b.file_field :avatar, :class => 'file-upload' %>
    </div>
  </div>
</div>

<div class="form-group">
  <div class="media">
    <%= image_tag program_banner(b), :class => 'thumbnail media-object pull-left', :height => 100, :width => 300 %>
    <div class="media-body padding-top-40">
      <%= b.file_field :banner, :class => 'file-upload' %>
    </div>
  </div>
</div>

和控制器:

respond_to do |format|
  if @program.update(program_params)
    format.html { redirect_to(program_path(@program), :notice => "Program updated") }
    format.js { render :json => @program.json }
  else
    format.html { render :new, :notice => "Error please try again" }
    format.js { render :json => "Error please try again" }
  end
end

模型:

图书模型

has_one :book_content, :dependent => :destroy  
accepts_nested_attributes_for :book_content, :allow_destroy => true

图书内容模型:

has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :default_url => "/images/:style/missing.png"
has_attached_file :banner, :styles => { :header => "600x150", :setting => "300x100"  }, :default_url => "/images/:style/found.jpeg"
belongs_to :book

这是一个嵌套表单,但是因为它有多个附件所以我不能使用reject_if

如果没有选择文件,如何告诉回形针保留原始文件?

谢谢

【问题讨论】:

  • 模型的相关部分是什么样的?例如模型,它的关联,以及关联模型,调用has_attachment
  • @ChrisPeters - 将模型添加到问题中

标签: paperclip ruby-on-rails-4


【解决方案1】:

经过一番研究,我发现我的问题是没有通过参数中的id,所以我有这个:

params.require(:book).permit(:book_name, book_content_attributes: [:media, :rating, :book_id])

改成这样:

params.require(:book).permit(:book_name, book_content_attributes: [:id, :media, :rating, :book_id])

注意添加的:id,现在可以正常使用了。

【讨论】:

  • 马安!!!这就是我昨天一整天都在寻找的东西!!谢谢!!你让我很开心!
  • 我有一个问题要问你。我在我的 _form.html.erb 中有。每次,当我尝试编辑我的海报时,我有很多链接可以添加图像,因为我现有的海报中有图像。任何想法如何解决它?
  • @ArseniiProhorchik - 尝试将 link_to_add 移到 fields_for 块之外,但仍位于主窗体内。
  • 它就在那里.. 在编辑海报时默认仍会看到它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-21
  • 2014-10-20
  • 2014-01-12
相关资源
最近更新 更多