как предварительно выбрать флажок ассоциации с помощью simple_form - PullRequest
17 голосов
/ 31 марта 2011

У меня есть этот фрагмент кода, при использовании 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 ]

29 голосов
/ 15 апреля 2011

Согласно документации 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, но это может помочь:)

25 голосов
/ 24 апреля 2012

Обновление для всех. выбранная опция не работает для меня. Я использовал:

:checked => [2, 3]

Надеюсь, это кому-нибудь поможет.

1 голос
/ 28 февраля 2013

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 для ваших исходных данных.

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

Привет.

0 голосов
/ 26 января 2012

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

params[:preset_id].to_i
...