私はこれに過去3日間費やしましたが、どこにも答えが見つかりません。私は Rails を学ぼうとしていますが、かなり簡単に思えるアプリケーションから始めました。
私は2つのモデルを持っています:
class Album < ActiveRecord::Base
has_and_belongs_to_many :users
attr_accessible :title
end
と
class User < ActiveRecord::Base
has_and_belongs_to_many :albums
attr_accessible :first_name, :last_name
end
結合テーブルも作成しました
create_table "albums_users", :id => false
t.integer "album_id"
t.integer "user_id"
users/show.html.erb ファイルにフォームが含まれています
<%= form_for([@user, @user.albums.build]) do |f| %>
このフォームが送信されると、 my album#create コントローラーが呼び出されます
def create
@user = User.find(params[:user_id])
@album = @user.albums.cre(params[:album])
@album.save
end
これにより、新しいアルバムが作成されますが、結合テーブルにエントリは作成されません。
フォームの送信時に送信されたパラメーター ハッシュを見ると、
Parameters: {"utf8"=>"✓", "commit"=>"Create Album", "user_id"=>"1", "authenticity_token"=>"XNCPLYWQRzjpuQfjqbR7XuhMjr5iRzjLiqXpqZ4spFo=", "album"=>{"event"=>"title"=>"My Title"}}
また、SQL リクエストはパラメーター ハッシュの user_id 値を使用しません。
SQL (3.4ms) INSERT INTO "albums" ("title", "user_id") VALUES (?, ?) [["title", "My Title"],["user_id", nil]]
user_id を使用してフォームに hidden_field を追加しようとしましたが、このエラーが発生します
Can't mass-assign protected attributes: user_id
私のモデルと私の関連付けのどこが悪いのか誰か説明してもらえますか? ありがとう!