17

使用している間、私はこのコードを持っていますsimple_form

= simple_form_for :report do |f|
  = f.association :presets,
    :collection => @account.presets.collect{ |p| [p.name, p.id] },
    :as => :check_boxes

presetIDpresetが渡されることを知っている特定のチェックボックスを事前に選択するにはどうすればよいparams[:preset_id]ですか?チェックボックスのHTMLname属性はreport[preset_ids][]です。

4

4 に答える 4

30

simple_formのドキュメントによると:

アソシエーションヘルパーは内部で入力を呼び出すだけなので、:select、:radio、および: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の経験はありませんが、これは役立つかもしれません:)

于 2011-04-15T12:02:34.223 に答える
25

みんなのためのアップデート。:selectedオプションは私には機能しませんでした。私が使用した:

:checked => [2, 3]

それが誰かを助けることを願っています。

于 2012-04-23T20:18:00.360 に答える
1

f.association本当にトリックをしました、ありがとう:)、事前選択、保存、そしてすべてのために、私はあなたの答え(@ claudio-acciaresi)に投票するのに十分な評判がありません。それが私がここにコメントしている理由です...

これは私のスニペットです:

<%= f.association :association, collection: Model.all, 
      value_method: :id, label_method: :name, 
      as: :check_boxes, include_blank: false %>

symbol:associationをモデルの現在のhas_manyに置き換えます。ソースデータのModel.allを置き換えます。

それが他の誰かのために役立つことを願っています:)

よろしく。

于 2013-02-27T20:18:54.120 に答える
0

params [:preset_id]を整数にキャストすることを忘れないでください:

params[:preset_id].to_i
于 2012-01-26T13:05:40.593 に答える