Paperclip を使用して画像を添付するポリモーフィック モデルである has_many "Assets" というモデル "Articles" があります。記事を編集しているとき、古い画像を削除し、同じストロークで新しい画像を追加できるようにしたいと考えています。Rails API はAssets の特定のインスタンスに使用できると言っているので、fields_for を使用しています。だからここに私のフォームの関連部分があります:
形:
=f.fields_for :assets do |ff|
=ff.label "image"
=ff.file_field :image
-unless @article.assets.first.image_file_name.nil?
-@article.assets.each do |asset|
=f.fields_for :assets, asset do |fff|
=image_tag(asset.image.url(:normal))
=fff.label "delete image"
=fff.check_box :_destroy
1 つ目fields_for
は記事に画像を追加するためのもので、2 つ目は既存のアセットを削除するためのものです。このフォームは、アセットの追加と削除を行うことができますが、両方を同時に行うことはできません。それが問題です。check_box
の指示が不十分か何かではないかと思います。
資産モデル:
class Asset < ActiveRecord::Base
belongs_to :imageable, :polymorphic => true
has_attached_file :image, :styles => { :normal => "100%",:small => "100 x100>",:medium => "200x200>", :thumb => "50x50>" },
:storage => :s3,
:s3_credentials => "#{Rails.root}/config/s3.yml",
:path => "/:attachment/:id/:style/:filename"
記事のコントローラー/編集:
def edit
@article = Article.find(params[:id])
@assets = @article.assets
if @assets.empty?
@article.assets.build
end
end
あなたの反応を楽しみにしています。