1

事件将部分 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.

当我创建新事件或编辑事件时,时事通讯值会正确保存在模型中。

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 回答