我在过去的三天里一直在做这个,我在任何地方都找不到任何答案。我正在尝试学习 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| %>
发送此表单时,它会调用我的相册#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
有人可以解释一下我的模型和关联有什么问题吗?谢谢!