Formtastic 预先检查几个复选框
Formtastic pre-check few checkboxes
我正在尝试手动告诉 formtastic 选中几个复选框。 @some_array
当前有一个名为 checked
的元素,每个成员都存在。
= f.input :cboxes, label: "CBoxes", as: :check_boxes,
collection: @some_array.map { |a| [a[:name], a[:id]] }
我尝试将 input_html
设置为 { checked: 'checked' }
(How to pre-check checkboxes in formtastic),但这会选中所有复选框,而不仅仅是我想要的 select 几个。
@some_array
的内容来自 API,我无法更改数据库结构 (Ruby on Rails + Formtastic: Not checking checkboxes for multiple checked answers)
建议?
如果您正在编辑 ActiveModel,则不需要 "manually select checkboxes"。
让我们考虑一个简单的示例,其中包含一个 User
模型,该模型具有字段 username
和 roles
。 Roles 字段是一个字符串列,Rails 序列化为一个数组。它也可能与其他 ActiveModel 有 has_many
关系,但为简单起见,我们假设它是一个数组。
User
定义在 user.rb
:
class User < ActiveRecord::Base
serialize :roles, Array
end
现在您可以 "assign manually" 想要的角色到 User
在您的控制器中:
@user = User.new(username: 'dimakura', roles: ['admin', 'editor'])
并在您的视图中定义表单:
<%= semantic_form_for @user do |f| %>
<%= f.input :username %>
<%= f.input :roles, as: :check_boxes, collection: ['owner', 'admin', 'editor', 'viewer'] %>
<% end %>
在给定的示例中,只有 "admin" 和 "editor" 角色会在表单中预先选择。 "owner" 和 "viewer" 角色将不会被选中。
更新 Official documentation 状态:
Formtastic, much like Rails, is very ActiveRecord-centric.
但实际上,自己创建兼容 ActiveRecord 的模型并不是什么大挑战。可以在 blog post.
中找到执行此操作的示例
我正在尝试手动告诉 formtastic 选中几个复选框。 @some_array
当前有一个名为 checked
的元素,每个成员都存在。
= f.input :cboxes, label: "CBoxes", as: :check_boxes,
collection: @some_array.map { |a| [a[:name], a[:id]] }
我尝试将 input_html
设置为 { checked: 'checked' }
(How to pre-check checkboxes in formtastic),但这会选中所有复选框,而不仅仅是我想要的 select 几个。
@some_array
的内容来自 API,我无法更改数据库结构 (Ruby on Rails + Formtastic: Not checking checkboxes for multiple checked answers)
建议?
如果您正在编辑 ActiveModel,则不需要 "manually select checkboxes"。
让我们考虑一个简单的示例,其中包含一个 User
模型,该模型具有字段 username
和 roles
。 Roles 字段是一个字符串列,Rails 序列化为一个数组。它也可能与其他 ActiveModel 有 has_many
关系,但为简单起见,我们假设它是一个数组。
User
定义在 user.rb
:
class User < ActiveRecord::Base
serialize :roles, Array
end
现在您可以 "assign manually" 想要的角色到 User
在您的控制器中:
@user = User.new(username: 'dimakura', roles: ['admin', 'editor'])
并在您的视图中定义表单:
<%= semantic_form_for @user do |f| %>
<%= f.input :username %>
<%= f.input :roles, as: :check_boxes, collection: ['owner', 'admin', 'editor', 'viewer'] %>
<% end %>
在给定的示例中,只有 "admin" 和 "editor" 角色会在表单中预先选择。 "owner" 和 "viewer" 角色将不会被选中。
更新 Official documentation 状态:
Formtastic, much like Rails, is very ActiveRecord-centric.
但实际上,自己创建兼容 ActiveRecord 的模型并不是什么大挑战。可以在 blog post.
中找到执行此操作的示例