15

我正在使用 SimpleForm 来构建我的表单。

我说过以下模型:

class ScheduledContent < ActiveRecord::Base
    belongs_to :parent
    attr_accessible :lots, :of, :other, :fields
    serialize :schedule, Array
end

我想构建一个表单,其中在许多其他字段和关联中(该模型实际上已经是 has_many 关联的一部分 - 所以是一个非常复杂的表单),向用户呈现可变天数(例如第 1 天,第 2 天,第 3 天等)- 每天都可以选中或取消选中。因此,如果用户检查第 1 天,并且第 5 天说 - 我想将 [1, 5] 存储在日程表字段中。在表格之前 - 我可以构建一个简单的可能日期数组以供选择,显然包括已经选择的日期。

使用 SimpleForm 的表单助手来表示此表单的最佳方式是什么?如果不可能这样做 - 我也可以使用 Rails 的表单助手来使其工作,但我更喜欢 SimpleForm,因为表单的其余部分已经使用 SimpleForm 构建。

4

3 回答 3

27

是的,您可以使用 SimpleForm 来完成。这是一个例子:

<%= simple_form_for(@user) do |f| %>
  <%= f.input :schedule, as: :check_boxes, collection: [['Day 1', 1], ['Day 2', 2]] %>
  <%= f.button :submit %>
<% end %>
于 2012-12-12T18:36:27.950 回答
5

回答一个老问题,但我最近不得不做类似的事情。为了标记已选择的复选框选项,我使用:checked了类似的方法:

<%=
  form.input :schedule, {
    as:         :check_boxes,
    collection: Days.my_scope.map { |day| [day.name, day.id] },
    wrapper:    :vertical_radio_and_checkboxes,
    checked:    form.object.schedule
  }
%>
于 2016-08-18T00:45:45.720 回答
0

也在为此苦苦挣扎。最后把它做成下面的haml代码。它利用 SimpleForm collection_check_boxes方法,将垂直输出带有标签的复选框。列表不会在整个复选框列表的顶部显示一般标签。

= f.collection_check_boxes :schedule, Day.all, :id, :label_name do |day|
  = day.check_box
  = day.label
  %br
于 2021-08-21T15:06:35.177 回答