как установить флажок ассоциации, используя простую форму
у меня есть этот кусок кода, при использовании 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][]
.
4 ответов
согласно документации 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, но это может помочь :)
обновление для всех. опция: selected не работала для меня. Я использовал:
:checked => [2, 3]
надеюсь, это кому-то поможет.
f.ассоциация действительно сделала трюк, спасибо:), для предварительного выбора, сохранения и всего, у меня недостаточно репутации, чтобы проголосовать за ваш ответ (@claudio-acciaresi), поэтому я комментирую здесь...
Это мой фрагмент кода:
<%= f.association :association, collection: Model.all,
value_method: :id, label_method: :name,
as: :check_boxes, include_blank: false %>
заменить символ: связь с текущим has_many из модели. Заменить Модель.все, для ваших исходных данных.
надеюсь, что это будет полезно для кого-то еще :)
С уважением.