Подтвердить что ты не робот

Как предварительно выбрать флажок ассоциации с помощью 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][].

4b9b3361

Ответ 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