我有一个使用回形针上传照片的Post模型的Rails应用程序。我希望能够在帖子的edit
视图中删除帖子中的照片。下面的代码后删除的图像,但现在我不能创建新附件(新的或现有的职位):删除使用回形针创建的附件
class Post < ActiveRecord::Base
has_attached_file :photo
validates_attachment_content_type :photo, :content_type => /\Aimage\/.*\Z/
attr_accessor :delete_photo
before_save :delete_photo, if: ->{ delete_photo == '1' && !photo.dirty? }
private
def delete_photo
self.photo = nil
end
end
和views/posts/edit.html.erb
:
<fieldset>
<ol class="post-fields-list">
<li>
<%= f.label :title %><br />
<%= f.text_field :title %>
</li>
<li>
<%= f.label :body %><br />
<%= f.text_area :body %>
</li>
<li><%= f.file_field :photo %></li>
<li>
<%= f.label :delete_image %><br />
<%= f.check_box :delete_photo %>
</li>
</ol>
</fieldset>
在上面的列表中的最后一个元素是创建用于删除图像的复选框的位置。
如前所述,当我注释掉该行模型:
before_save :delete_photo, if: ->{ delete_photo == '1' && !photo.dirty? }
我可以创建附件没有问题。
感谢您的帮助!
UPDATE:
我注意到,通过f.check_box
生成的HTML看起来相当怪异:
<input name="post[delete_photo]" type="hidden" value="0" /><input id="post_delete_photo" name="post[delete_photo]" type="checkbox" value="1" />
刚试过这个,但它不起作用...顺便说一句,图像被保存到'/ public'文件夹中的磁盘。 – abbottjam 2014-09-30 11:32:43