如何允许所有参数,即使它们是空白的?
How do I allow all parameters even if they are blank?
我有以下内容:
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
.
如果参数为空,我们需要使用fetch
:
为其设置一个默认值
params.fetch(:deal_filter, {}).permit(:some_params)
这样 params[:deal_filter]
在缺少时会变成 {}
。
根据你的错误,最终代码应该是:
params.fetch(:deal_filter, {}).permit(:min, :max, :sector_id)
我有以下内容:
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
.
如果参数为空,我们需要使用fetch
:
params.fetch(:deal_filter, {}).permit(:some_params)
这样 params[:deal_filter]
在缺少时会变成 {}
。
根据你的错误,最终代码应该是:
params.fetch(:deal_filter, {}).permit(:min, :max, :sector_id)