Как мне разрешить все параметры, даже если они пустые?
У меня есть следующее:
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 ответ
Решение
Если params пуст, нам нужно установить для него значение по умолчанию, используя fetch
:
params.fetch(:deal_filter, {}).permit(:some_params)
чтобы params[:deal_filter]
будет {}
когда это отсутствует.
Из ваших ошибок, окончательный код должен быть:
params.fetch(:deal_filter, {}).permit(:min, :max, :sector_id)