[RUBY-ON-RAILS] 종이 클립은 어떻게 첨부 파일을 삭제 난간?
RUBY-ON-RAILS종이 클립은 어떻게 첨부 파일을 삭제 난간?
레일 3. 내가 업데이트 작업을 사용하여 교체하지 않고 기존 첨부 파일을 삭제하려면 (/ 아마존 S3 W) 나는 종이 클립을 사용하고 있습니다.
나는 단지 여기의 한 예를 발견했습니다 작업에, 그냥 삭제하지 않을 것이라고 가져올 수 없습니다 왜 말을 로그에 아무것도 없었다. 나는 양식에 이런 일을하고 싶어 :
<%- unless @page.new_record? || !@page.image? -%>
<%= f.check_box :image_delete, :label => 'Delete Image' %>
<%- end -%>
(페이지 모델의 이름, 이미지 첨부 보유 속성 이름이다)
하지만 어떻게 그 체크 박스를 감지 않고 더 중요한 것은, 어떻게 이미지를 삭제합니까? 난 어떤 도움을 주셔서 감사합니다!
해결법
-
==============================
1.첫째는 당신이 (당신처럼 보이는)는 form_for에 CHECK_BOX을 만들 때, 다음 양식은 기본 보내기로한다 : "1"로 image_delete 확인 경우 "0"으로 선택하지 않은 경우. 메소드 선언은 다음과 같다 :
첫째는 당신이 (당신처럼 보이는)는 form_for에 CHECK_BOX을 만들 때, 다음 양식은 기본 보내기로한다 : "1"로 image_delete 확인 경우 "0"으로 선택하지 않은 경우. 메소드 선언은 다음과 같다 :
def check_box(method, options = {}, checked_value = "1", unchecked_value = "0")
어떤 당신이 원하는,하지만 물론 옵션의 경우 다른 값을 지정할 수 있음을 보여줍니다.
둘째, 호출은 수동이 있습니다에 부착되는 모델 인스턴스를 삭제하지 않고 첨부 파일을 삭제합니다 :
@page.image.destroy #Will remove the attachment and save the model @page.image.clear #Will queue the attachment to be deleted
그리고 체크 박스를 통해 이미지를 삭제하는 방법을 달성하기 위해, 아마도 당신의 페이지 모델로이 같은 추가 :
class Page < ActiveRecord::Base has_attached_file :image before_save :destroy_image? def image_delete @image_delete ||= "0" end def image_delete=(value) @image_delete = value end private def destroy_image? self.image.clear if @image_delete == "1" end end
당신이 당신의 양식을 작성하고 추가 할 때이 방법 : image_delete 체크 박스를, 사용자 인스턴스에서 기본 값 "0"을로드합니다. 해당 필드를 선택하면 그 다음 컨트롤러는 사용자가 저장 될 때 이미지가 삭제 될 경우 "1"과, 그것을 확인합니다하기 위해 image_delete를 업데이트합니다.
-
==============================
2.has_attached_file : 자산
has_attached_file : 자산
=>
attr_accessor :delete_asset before_validation { asset.clear if delete_asset == '1' }
필요가 종이 클립이 그것을 할 것입니다, 자산을 파괴 없습니다.
(: delete_asset) 양식 form.check_box에 충분합니다.
-
==============================
3.(가) tickbox 모델에 변경된 유일 파괴 곳 벤와의 대답하지만, 모듈에 싸여, 중첩 된 속성 모델의 가장자리 케이스를 덮고있다.
(가) tickbox 모델에 변경된 유일 파괴 곳 벤와의 대답하지만, 모듈에 싸여, 중첩 된 속성 모델의 가장자리 케이스를 덮고있다.
이 모델의 모든 첨부 파일에 적용됩니다.
# This needs to be included after all has_attached_file statements in a class module DeletableAttachment extend ActiveSupport::Concern included do attachment_definitions.keys.each do |name| attr_accessor :"delete_#{name}" before_validation { send(name).clear if send("delete_#{name}") == '1' } define_method :"delete_#{name}=" do |value| instance_variable_set :"@delete_#{name}", value send("#{name}_file_name_will_change!") end end end end
-
==============================
4.너무 귀하의 페이지 모델이 추가해야합니다 :
너무 귀하의 페이지 모델이 추가해야합니다 :
attr_accessible :image_delete
-
==============================
5.지원 바울의 솔루션의 수정 된 버전은 5 개 사용자 지정 특성을 레일. 난 그냥 has_attached_file 정의하기 전에 파일의 맨 위에있는 모듈을 포함 할 수있는 방법이 있었으면.
지원 바울의 솔루션의 수정 된 버전은 5 개 사용자 지정 특성을 레일. 난 그냥 has_attached_file 정의하기 전에 파일의 맨 위에있는 모듈을 포함 할 수있는 방법이 있었으면.
module Mixins module PaperclipRemover extend ActiveSupport::Concern included do attachment_definitions.keys.each do |name| attribute :"remove_#{name}", :boolean before_validation do self.send("#{name}=", nil) if send("remove_#{name}?") end end end end end
from https://stackoverflow.com/questions/4435826/rails-paperclip-how-to-delete-attachment by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 아약스 게시물에 세션을 다시로드하지 난간 (0) | 2020.02.21 |
---|---|
[RUBY-ON-RAILS] RAILS_ENV 대 Rails.env (0) | 2020.02.21 |
[RUBY-ON-RAILS] has_many에 레코드를 추가하는 방법 : 레일에 협회를 통해 (0) | 2020.02.21 |
[RUBY-ON-RAILS] 선택 도우미 난간 - 기본 방법, 값을 선택? (0) | 2020.02.21 |
[RUBY-ON-RAILS] 협회를 통해 belongs_to (0) | 2020.02.21 |