Rails simple_form复选框用于序列化数组字段

时间:2012-12-12 06:04:28

标签: ruby-on-rails-3 simple-form form-helpers

我正在使用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构建。

2 个答案:

答案 0 :(得分:21)

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

<%= simple_form_for(@user) do |f| %>
  <%= f.input :schedule, as: :check_boxes, collection: [['Day 1', 1], ['Day 2', 2]] %>
  <%= f.button :submit %>
<% end %>

答案 1 :(得分:3)

回答一个老问题,但最近我不得不做类似的事情。要标记已经选中的复选框选项,我使用: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
  }
%>