[英]Rails multiple params permit calls
我正在嘗試在與以下類似的單一方法中使用多個許可證(偽代碼)
def index
model.create(
params.permit(:b, :c)
)
params.permit(:a)
end
這是我的實際代碼
def create
params.permit(:create_special_categories)
balance_sheet = ::BalanceSheet.create!(
balance_sheet_params.merge(date: Time.zone.now.to_date, entity: @entity)
)
balance_sheet.create_special_categories if params[:create_special_categories]
render json: balance_sheet, serializer: ::Api::V3::BalanceSheetSerializer
end
def balance_sheet_params
params.permit(
:id,
:entity,
:entity_id,
:date,
:name
)
end
但是,出現以下錯誤...
ActionController::UnpermittedParameters:
found unpermitted parameter: :create_special_categories
UPDATE
我的解決方案是一起避免使用強參數。
def create
balance_sheet = ::BalanceSheet.new(
date: Time.zone.now.to_date, entity: @entity
)
balance_sheet.name = params[:name]
balance_sheet.save!
balance_sheet.create_special_categories if params[:create_special_categories]
render json: balance_sheet, serializer: ::Api::V3::BalanceSheetSerializer
end
這行沒有任何作用, params.permit
不會鏈接或添加到先前的permit
,您必須使用結果,這就是為什么它幾乎總是在單獨的方法中使用的原因。
params.permit(:create_special_categories)
您必須做的是將返回的內容用於以下語句
permitted_params = params.permit(:create_special_categories)
Model.create(permitted_params)
...但是您確實應該將此外包給像您已經擁有的特殊方法。 顯然,您將不得不對此進行調整。
def balance_sheet_params
if params[:create_special_categories]
params.permit(:id,
:entity,
:entity_id,
:date,
:name,
:create_special_categories)
else
params.permit(
:id,
:entity,
:entity_id,
:date,
:name)
end
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.