[解決済み] Rails Paperclip 添付ファイルを削除する方法は?
質問
私は ペーパークリップ (w/ Amazon s3) on Rails 3を使用しています。既存の添付ファイルを削除したい を置き換えることなく を更新アクションを使って削除したいです。
私はこの例を1つだけ見つけました。 ここで を削除することができず、ログにはその理由を示すものは何もありませんでした。私はこのようなことをフォームでやりたかったのです。
<%- unless @page.new_record? || [email protected]? -%>
<%= f.check_box :image_delete, :label => 'Delete Image' %>
<%- end -%>
(pageはモデル名、imageは添付ファイルを保持する属性名)
しかし、どのようにそのチェックボックスを検出し、さらに重要なことは、どのように画像を削除するのでしょうか?私はどんな助けでも感謝します!
どのように解決するのですか?
まず、form_for で check_box を作成した場合(そのように見える)、デフォルトでは :image_delete をチェックした場合は "1" として、チェックされていない場合は "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
そして、チェックボックスで画像を削除する方法を実現するために、おそらく次のようなものをPageモデルに追加します。
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 チェックボックスを追加すると、User インスタンスからデフォルト値 "0" が読み込まれます。そして、もしそのフィールドがチェックされていれば、コントローラはimage_deleteを"1"に更新し、Userが保存されるときに、画像が削除されるかどうかをチェックします。
関連
-
[解決済み】Rails: sudo "コマンドが認識されないのはなぜですか?
-
[解決済み】OS X Yosemite 10.10.5 で [Ruby on Rails] 5 をインストールすると extconf が失敗して終了コード 1 エラーになる。
-
[解決済み] rspecにおけるassignsの意味
-
[解決済み] Railsはsaveでモデル内の検証をスキップしますか?
-
[解決済み] railsでcheck_boxをcheckedにする方法は?
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] Rubyでnilとemptyとblankを理解する方法
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み】Railsの認証トークンを理解する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】bundle installが "Could not locate Gemfile "を返す。
-
[解決済み] ウェブパッカーがアプリケーションを見つけ出せない
-
[解決済み] Railsマイグレーションを利用してカラムをドロップする方法
-
[解決済み] Railsでpng画像を文字列形式で表示するには?
-
[解決済み] railsでhidden fieldタグを使用する方法
-
[解決済み] Ruby:Rubyの配列にinclude.の反対はある?
-
[解決済み] gemのアップデート後、"Asset was not declared to be precompiled in production "でテストが失敗する。
-
[解決済み] Railsはsaveでモデル内の検証をスキップしますか?
-
[解決済み] 属性を割り当てる場合、引数としてハッシュを渡す必要がある
-
[解決済み] Ruby on rails アプリで ES6 (ES2015) を使用するにはどうすればよいですか?