在 RoR 中,如何在提交表单时避免 "Unpermitted parameter"?
In RoR, how do I avoid this "Unpermitted parameter" when submitting my form?
我正在使用 Rails 4.2.4。在我的控制器中我有这个
def update
@user = current_user
if @user.save_with_address(user_params)
…
end
private
def user_params
params.require(:user).permit(:first_name, :last_name, :dob, :address, :automatic_import)
end
在我的模型中(基于我的“用户”table,其中有一个“users.address_id”列),我有这个
class User < ActiveRecord::Base
belongs_to :address
attr_accessor :address
但是当我使用以下数据将表单提交到我的“更新”方法(如上所示)时
Parameters: {"utf8"=>"✓", "authenticity_token"=>”tjLutbCuZUmLImSRnoRUCtcG8O0u070YixqjnMm5hmAZhn94fFte4jpWgB4hoOstiP9vJTj/c081EJ8NYnbMvg==", "user"=>{"first_name"=>"D.", "last_name"=>”LastName”, "dob(2i)"=>"", "dob(3i)"=>"", "dob(1i)"=>"", "address"=>{"city"=>"golden", "state"=>"3547", "country"=>"0"}, "automatic_import"=>"0"}, "commit"=>"Save", "id"=>"1"}
当我的“user_params”函数被调用并且我的地址对象没有保存为我的用户对象的一部分时,我收到了“Unpermitted parameter: address”消息。我需要什么不同的结构来避免这种情况?
由于地址是一个散列,您必须指定其所有单独的字段。
params.require(:user).permit(:first_name, :last_name, address: [:city, :state, :country])
我正在使用 Rails 4.2.4。在我的控制器中我有这个
def update
@user = current_user
if @user.save_with_address(user_params)
…
end
private
def user_params
params.require(:user).permit(:first_name, :last_name, :dob, :address, :automatic_import)
end
在我的模型中(基于我的“用户”table,其中有一个“users.address_id”列),我有这个
class User < ActiveRecord::Base
belongs_to :address
attr_accessor :address
但是当我使用以下数据将表单提交到我的“更新”方法(如上所示)时
Parameters: {"utf8"=>"✓", "authenticity_token"=>”tjLutbCuZUmLImSRnoRUCtcG8O0u070YixqjnMm5hmAZhn94fFte4jpWgB4hoOstiP9vJTj/c081EJ8NYnbMvg==", "user"=>{"first_name"=>"D.", "last_name"=>”LastName”, "dob(2i)"=>"", "dob(3i)"=>"", "dob(1i)"=>"", "address"=>{"city"=>"golden", "state"=>"3547", "country"=>"0"}, "automatic_import"=>"0"}, "commit"=>"Save", "id"=>"1"}
当我的“user_params”函数被调用并且我的地址对象没有保存为我的用户对象的一部分时,我收到了“Unpermitted parameter: address”消息。我需要什么不同的结构来避免这种情况?
由于地址是一个散列,您必须指定其所有单独的字段。
params.require(:user).permit(:first_name, :last_name, address: [:city, :state, :country])