我有一個質量分配錯誤,我只能用UGLY代碼修復。我一定做錯了什麼。 讓我解釋一下:使用內建has_many關係創建操作導致質量分配錯誤
我的rails應用程序客戶端有很多聯繫人。客戶端頁面顯示屬於該客戶端的聯繫人列表。 我希望能夠將新聯繫人添加到列表中。所以我通過客戶端使用接觸器...
<%= link_to('new contact', new_contact_path(client_id: @client)) %>
在ContactsController ....
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
...
'保存' 結果在意料之中錯誤:
Can't mass-assign protected attributes: 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])
這種方法的作品,但它只是一切似乎錯了。當然是一些更優雅的選擇。 任何幫助表示讚賞。 (是的,我是新來的導軌)
感謝...我非常確信我是想以錯誤的方式解決問題。這似乎是一個很常見的場景 – zambacan 2013-04-08 11:54:33
是的。我添加了新的和創建操作的代碼(我沒做過測試,所以如果只是複製粘貼,可能會出錯)。但是,這很常見。如果您想更多地瞭解,請查找「嵌套資源」以及如何使用它們。很高興幫助。謝謝 – Aleks 2013-04-08 11:57:01
謝謝你Aleks。非常感激。 – zambacan 2013-04-08 23:08:01