即使它们是空白的,我如何允许所有参数?

时间:2017-06-07 21:52:48

标签: ruby-on-rails strong-parameters

我有以下内容:

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

1 个答案:

答案 0 :(得分:2)

如果params为空,我们需要使用fetch为其设置默认值:

params.fetch(:deal_filter, {}).permit(:some_params)

以便params[:deal_filter]{}丢失时为params.fetch(:deal_filter, {}).permit(:min, :max, :sector_id)

根据您的错误,最终代码应为:

name