как установить флажок ассоциации, используя простую форму

у меня есть этот кусок кода, при использовании 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 из модели. Заменить Модель.все, для ваших исходных данных.

надеюсь, что это будет полезно для кого-то еще :)

С уважением.


Не забудьте привести params [: preset_id] к целому числу:

params[:preset_id].to_i