我有一个批量分配错误,我只能用 UGLY 代码修复。我一定做错了什么。让我解释:
我的 Rails 应用程序客户有很多联系人。客户页面显示属于该客户的联系人列表。我希望能够将新联系人添加到列表中。所以我使用...将客户端传递给联系人控制器
<%= link_to('new contact', new_contact_path(client_id: @client)) %>
在联系人控制器中......
def new
client=Client.find(params[:client_id])
@contact=client.contacts.new
end
def create
@client = Client.find(params[:contact][:client_id])
@contact= @client.contacts.build(params[:contact])
if @contact.save
...
“保存”会导致一个不足为奇的错误:
无法批量分配受保护的属性:client_id
因为联系人参数包括在联系人模型中不是(也不应该是) attr_accessible 的 client_id
我知道如何解决问题的唯一方法是单独设置每个参数(不包括 client_id),如下所示:
@contact= @client.contacts.build(first_name: params[:contact][:first_name], last_name: params[:contact][:first_name], email: params[:contact][:email])
这种方法有效,但似乎一切都是错误的。当然是一些更优雅的选择。任何帮助表示赞赏。(是的,我是 Rails 新手)