我有一個使用回形針上傳照片的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