事件将节ID保存在数组中。但是在新创建的事件的/events/1/edit
视图中,不会检查预期的复选框。我猜是因为复选框值的默认值是布尔值。
Event.last.newsletters #=> ["108", "115", "116", "117", "118", ""]
我有一个活动的CRUD。每个事件可以属于多个部分。我将它显示为带有simpleform gem的复选框的集合。
<%= 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.
当我创建新事件或编辑事件时,新闻稿值会正确保存在模型中。
答案 0 :(得分:4)
尝试指定参数:checked
:
<%= f.collection_check_boxes :newsletters,
Section.all,
:id,
:name,
:input_html => { :class => 'checkbox' },
:checked => @event.newsletters %>
参考:how to preselect an association checkbox using simple_form
答案 1 :(得分:2)
如果您使用的是SimpleForm,可以使用:
<%= f.input :newsletters, collection: Section.all, as: :check_boxes %>