1

ユーザーがajaxを使用してアセットをアップロードできるフォームがあります。これにより、作成時にPostオブジェクトに関連付けたい多くのAssetオブジェクトが作成されます。作成されたアセットIDで更新するasset_idsという名前のform_fieldがあります。Postオブジェクトを作成し、そのデータにassign_attributesを入力すると、IDがいくつあっても、関連付けは1つだけ作成されます。

資産モデル:

class Asset < ActiveRecord::Base

  attr_accessible :caption, :image
  belongs_to :post
  has_attached_file :image, :styles => { :large => "600x600>", :medium => "300x300>", :thumb => "100x100>" }

end

ポストモデル:

class Post < ActiveRecord::Base

    attr_accessible :content, :post_date, :status, :title, :tag_list, :asset_ids, :as => :admin
    has_many :assets, :dependent => :destroy
    has_and_belongs_to_many :tags

    validates :content, :post_date, :title, :presence => true

end

投稿されたデータハッシュの例:

{"title"=>"Test post", "status"=>"true", "post_date"=>"01/02/2013", "content"=>"&nbsp;Some content", "tag_list"=>"", "asset_ids"=>"97,102"}

上記の例では、次のようにassign_attributesを実行すると、新しい投稿に1つのアセット(ID 97)のみが割り当てられます。

@post = Post.new
@post.assign_attributes params[:post], :as => :admin
4

1 に答える 1

1

ID を配列として割り当てていることを確認する必要がありました。

@post.asset_ids = params[:post][:asset_ids].split(",")
于 2013-01-03T04:45:01.303 に答える