ユーザーが多くのアルバムを持ち、各アルバムに多くの写真があるフォトアルバムを作成しています。
アルバムクラス
Class Album < ActiveRecord::Base
attr_accessible :photos_attributes, :name
has_many photos, :as => imageable
accepts_nested_attributes_for :photos
end
写真教室
Class Photo < ActiveRecord::Base
attr_accessible :description, :location
belongs_to :imageable, :polymorphic => true
end
アルバム コントローラ メソッド
def create
@album = current_user.albums.build(params[:album])
if @album.save
redirect_to @album, :notice => "Successfully created album."
else
render :action => 'new'
end
end
def edit
@album = Album.find(params[:id])
end
def update
@album = Album.find(params[:id])
if @album.update_attributes(params[:album])
redirect_to @album, :notice => "Successfully updated album."
else
render :action => 'edit'
end
end
アルバム編集フォーム
<%= form_for @album do |f| %>
<%= f.label :album_name %><br />
<%= f.text_field :name %>
<%= f.fields_for :photos do |photo| %>
<%= photo.label :photo_description %>
<%= photo.text_field :description %>
<%= photo.label :photo_location %>
<%= photo.text_field :location %>
<% end %>
<% end %>
問題は、編集フォームが送信されると、photos_attributes がハッシュとして送信され、Rails が適切に更新されないことです。
Parameters: { "album"=>{"user_id"=>"1", "name"=>"Lake Tahoe",
"photos_attributes"=>{"1"=>{"description"=>"Top of the Mountain!", "id"=>"2"},
"2"=>{"description"=>"From the cabin", "id"=>"5"}}},
"commit"=>"Update Ablum", "id"=>"10"}
photos_attributes ハッシュと共に送信される ID は、データベース内の photos テーブルの実際の ID です。なんらかの理由で、ユーザーが写真の説明や場所を編集しても、Rails はそれらを更新しません。写真がポリモーフィックであるという事実と関係があると思います。
誰か助けてくださいお願いできますか?? 私は数時間試行し、ウェブ全体を検索しましたが、解決策を見つけることができませんでした.
ありがとう!