1

イベントはセクションIDを配列に保存します。ただし/events/1/edit、新しく作成されたイベントのビューでは、予期されるチェックボックスはチェックされていません。チェックボックスの値のデフォルトはブール値であるため、推測しています。

Event.last.newsletters #=> ["108", "115", "116", "117", "118", ""]

イベントのCRUDがあります。各イベントは複数のセクションに属することができます。これをsimpleformgemのチェックボックスのコレクションとして表示しました。

<%= simple_form_for @event do |f| %>
...
<%= f.collection_check_boxes :newsletters, Section.all, :id, :name, :input_html => { :class => 'checkbox' } %>

これにより、次のhtmlが生成されます。

<span><input id="event_newsletters_1" name="event[newsletters][]" type="checkbox" value="1" /><label class="collection_check_boxes" for="event_newsletters_1">Newsletter 1</label></span>
<span><input id="event_newsletters_2" name="event[newsletters][]" type="checkbox" value="2" /><label class="collection_check_boxes" for="event_newsletters_2">Newsletter 2</label></span>
etc. etc.

新しいイベントを作成したり、イベントを編集したりすると、ニュースレターの値がモデルに適切に保存されます。

4

2 に答える 2

4

パラメータを指定してみてください:checked

<%= f.collection_check_boxes :newsletters,
                             Section.all,
                             :id,
                             :name,
                             :input_html => { :class => 'checkbox' },
                             :checked => @event.newsletters %>

参照:simple_formを使用して関連付けチェックボックスを事前に選択する方法

于 2012-12-11T17:49:49.223 に答える
2

SimpleFormを使用している場合は、次を使用できます。

<%= f.input :newsletters, collection: Section.all, as: :check_boxes %>
于 2012-12-11T18:05:57.150 に答える