Как предварительно выбрать флажок ассоциации с помощью simple_form
У меня есть этот кусок кода, используя simple_form
:
= simple_form_for :report do |f|
= f.association :presets,
:collection => @account.presets.collect{ |p| [p.name, p.id] },
:as => :check_boxes
Как я могу предварительно выбрать конкретный флажок preset
, зная, что идентификатор этого preset
передан в пределах params[:preset_id]
? Атрибутами HTML name
являются: report[preset_ids][]
.
Ответы
Ответ 1
Согласно документации simple_form:
Вспомогательный вызов ассоциации просто вызывает ввод под капотом, поэтому все варианты доступный для: выбора,: радио и: check_boxes также доступны для ассоциация. Кроме того, вы можете укажите коллекцию вручную, все вместе с подсказкой:
f.association :company, :collection
=> Company.active.all(:order => 'name'), :prompt => "Choose a Company"
Итак, вы должны использовать что-то вроде этого:
= simple_form_for :report do |f|
= f.association :presets,
:collection => @account.presets.collect{ |p| [p.name, p.id] },
:as => :check_boxes,
:checked => params[:preset_id]
У меня нет опыта с simple_form, но это может помочь:)
Ответ 2
Обновление для всех. выбранная опция не работала для меня. Я использовал:
:checked => [2, 3]
Надеюсь, что это поможет кому-то.
Ответ 3
f.association Действительно, трюк, спасибо:), для предварительного выбора, сохранения и всего, у меня недостаточно репутации, чтобы проголосовать за ваш ответ (@claudio-acciaresi), почему я комментирую здесь..
Это мой фрагмент:
<%= f.association :association, collection: Model.all,
value_method: :id, label_method: :name,
as: :check_boxes, include_blank: false %>
Заменить символ: связь с текущим has_many из модели.
Замените Model.all для исходных данных.
Надеюсь, что это станет полезным для кого-то еще:)
С уважением.
Ответ 4
Не забудьте ввести параметры [: preset_id] в целое число:
params[:preset_id].to_i