我正在使用 form_for 循环将数据提交给我的控制器的 create 方法。在 form_for 中,我有几个 text_fields 与表上的任何字段都没有关联。它们本质上是自由文本字段,我想将数据放入其中并用于 create 方法中的其他逻辑。
当我提交表单时,创建的第一行被击中:
@user = User.new(params[:user])
发生以下错误(:test1 是我与模型无关的表单字段):
Can't mass-assign protected attributes: test1
我意识到这是因为我发送的文本字段与模型无关。我尝试了各种奇怪的语法,例如:
User.new(params.require(:user).except(:test1))
并User.new(params[:user].except(:test1))
无济于事。
我在网上找到了几个来源,说明您可以使用 except 或 delete 方法,但我似乎无法让它工作,尤其是在 User.new() 中。
我也在新版本之外尝试过:
params.delete(:test1)
@user = User.new(params[:xref_ability])
我还希望最终能够在创建时读取附加属性,所以我认为 except() 或 delete() 不会解决我的所有问题(如果它确实有效)。因此,我在控制器类和模型类上尝试了 attr_accessor :test1,希望它会给方法读取属性的权限,但没有成功。
我还尝试将其添加到我的模型上的 attr_accessible 中,这会导致错误:
unknown attribute: test1
还有其他建议吗?