2016-11-12 11 views
1

Я уже прошли через следующие посты, без получения каких-либо удовлетворительных ответов:Разрешение на заказ создан Params в рельсах

can't permit custom params with strong parameters

Permit extra params in special cases with Strong Params in Rails 4

То, что я хочу это разрешить мой заказ создан Params в контроллере рельсы :

МОЙ КОД

Шаблон

= form_tag ... 
    = select_tag :hour, options_for_select(options_for_hours), name: "clinic_hour[close_time][]", title: "Hours" 
    = select_tag :minute, options_for_select(options_for_minutes), name: "clinic_hour[close_time][]", title: "Minutes" 
    = select_tag :convention, options_for_select([["AM", "AM"], ["PM", "PM"]]), name: "clinic_hour[close_time][]" 
    = submit_tag ... 

Приведенный выше код создает Params как:

Parameters: {"clinic_hour"=>{"close_time"=>["0", "0", "AM"]}} 

Но в контроллере ...

контроллера

Когда я люблю:

def clinic_hour_params 
    params.require(:clinic_hour).permit(
    :close_time 
) 
end 

Он по-прежнему говорит, что это, в журнале сервера рельсах:

Unpermitted parameters: close_time 
{} 

Что случилось?

ответ

1

У вас есть массив, что означает, что вам нужно специально сказать, чтобы принять массив. Попробуйте это:

def clinic_hour_params 
    params.require(:clinic_hour).permit(
    :close_time => [] 
) 
end 

Также здесь https://github.com/rails/strong_parameters вы можете увидеть, какие все типы «permittable».

1

Если посмотреть на README для сильных параметров под Permitted Scalar Values вы увидите, что так как вы работаете с массивом скалярных значений, которые вы должны будете обозначать так:

def clinic_hour_params 
    params.require(:clinic_hour).permit(
    close_time: [] 
) 
end 

 Смежные вопросы

  • Нет связанных вопросов^_^