将不在模型属性中的参数列入白名单
whitelisting params that are not in the model attributes
我正在尝试传递一些不属于模型属性的额外属性。
def fulfillment_params
params.require(:fulfillment).permit(
:id, :ids, :batch_edit_fulfillment_ids,
:remarks,
)
end
我该如何正确执行此操作? batch_edit_fulfillment_ids
是我在我的一种表单中使用的字段,但是当我尝试执行 update(fulfillment_params)
操作时,rails 假定这是我模型中的字段之一并抛出一个模型中没有这样的字段的错误
尽量不要传给fulfillment_params
。
仅使用 params[:fulfillment][:batch_edit_fulfillment_ids]
。
如果 batch_edit_fulfillment_ids
不是 table 中的字段,那么您肯定不会更新它。它没有任何意义。所以你不需要在 whitelist
中添加它,因为你只将那些 attributes
可以被用户更新的列入白名单。
在你的情况下,你可以参考 Alex 的回答,或者如果你想访问模型中的值,那么你可以设置它
class Fulfillment < ActiveRecord::Base
attr_accessor :batch_edit_fulfillment_ids
end
# in controller you can set
@fulfillment.batch_edit_fulfillment_ids = params[:fulfillment][:batch_edit_fulfillment_ids]
试试这个方法:
def fulfillment_params
hash = {}
hash.merge! params.require(:fulfillment).slice(:id, :ids, :remarks) # model attributes
hash.merge! params.slice(:batch_edit_fulfillment_ids) # non-model attributes
hash
end
我正在尝试传递一些不属于模型属性的额外属性。
def fulfillment_params
params.require(:fulfillment).permit(
:id, :ids, :batch_edit_fulfillment_ids,
:remarks,
)
end
我该如何正确执行此操作? batch_edit_fulfillment_ids
是我在我的一种表单中使用的字段,但是当我尝试执行 update(fulfillment_params)
操作时,rails 假定这是我模型中的字段之一并抛出一个模型中没有这样的字段的错误
尽量不要传给fulfillment_params
。
仅使用 params[:fulfillment][:batch_edit_fulfillment_ids]
。
如果 batch_edit_fulfillment_ids
不是 table 中的字段,那么您肯定不会更新它。它没有任何意义。所以你不需要在 whitelist
中添加它,因为你只将那些 attributes
可以被用户更新的列入白名单。
在你的情况下,你可以参考 Alex 的回答,或者如果你想访问模型中的值,那么你可以设置它
class Fulfillment < ActiveRecord::Base
attr_accessor :batch_edit_fulfillment_ids
end
# in controller you can set
@fulfillment.batch_edit_fulfillment_ids = params[:fulfillment][:batch_edit_fulfillment_ids]
试试这个方法:
def fulfillment_params
hash = {}
hash.merge! params.require(:fulfillment).slice(:id, :ids, :remarks) # model attributes
hash.merge! params.slice(:batch_edit_fulfillment_ids) # non-model attributes
hash
end