我有以下内容:
def index
@dealFilter = DealFilter.new params[:deal_filter].permit(deal_filter: {})
在给出参数时它起作用,但在缺少参数时不起作用。它会出现undefined method ``permit' for nil:NilClass Did you mean? print
错误。我希望它能在两种情况下都有效。
params[:deal_filter]
,但它抱怨ActiveModel::ForbiddenAttributesError
。 params.permit(deal_filter: {})
,但它说unknown attribute 'deal_filter' for DealFilter.
。 params.permit(:deal_filter)
,但忽略了参数值:Unpermitted parameters: utf8, deal_filter, commit
。答案 0 :(得分:2)
如果params为空,我们需要使用fetch
为其设置默认值:
params.fetch(:deal_filter, {}).permit(:some_params)
以便params[:deal_filter]
在{}
丢失时为params.fetch(:deal_filter, {}).permit(:min, :max, :sector_id)
。
根据您的错误,最终代码应为:
name