Ruby on rails 3 Rails用于序列化数组字段的简单表单复选框
我正在使用SimpleForm构建表单 我说的是以下模式:Ruby on rails 3 Rails用于序列化数组字段的简单表单复选框,ruby-on-rails-3,simple-form,form-helpers,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 class ScheduledContent
class ScheduledContent < ActiveRecord::Base
belongs_to :parent
attr_accessible :lots, :of, :other, :fields
serialize :schedule, Array
end
class ScheduledContent
我想构造一个表单,其中在许多其他字段和关联中(这个模型实际上是一个已经有很多关联的表单的一部分-这是一个非常复杂的表单),一个用户可以看到一个可变的天数(例如第1天、第2天、第3天等等),并且每天都可以检查或取消检查。因此,如果用户检查第1天,第5天说-我想在schedule字段中存储[1,5]。在表单之前-我可以构建一个简单的数组,其中包含可以选择的日期,显然包括已经选择的日期
使用SimpleForm的表单帮助程序表示此表单的最佳方式是什么?如果不可能这样做-我也可以使用Rails的表单帮助程序使其工作,但我更喜欢SimpleForm,因为表单的其余部分已经使用SimpleForm构建。是的,您可以使用SimpleForm来完成。以下是一个例子:
<%= simple_form_for(@user) do |f| %>
<%= f.input :schedule, as: :check_boxes, collection: [['Day 1', 1], ['Day 2', 2]] %>
<%= f.button :submit %>
<% end %>
回答一个老问题,但最近我不得不做类似的事情。为了标记已选中的复选框选项,我使用了与此类似的
: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
}
%>
是-这对我很有用。有没有办法也说哪些复选框已经被选中?人力资源管理,你是什么意思?你什么时候需要知道?为什么?我想知道——用户可能想知道——哪些天已经在日程中被“选择”了。此表单同时出现在新建屏幕和编辑屏幕上。hmmm,但如果您设置@user.schedule=[1]
,则您将得到一个选中了第1天
复选框的表单。这不是你想要的吗?