我使用以下 Rails 表单助手创建了复选框:
<%= check_box("tag", tag.id) %>
然而,我需要将其中一些默认选中。Rails文档没有指定如何实现。有什么办法吗?怎么做?
我使用以下 Rails 表单助手创建了复选框:
<%= check_box("tag", tag.id) %>
然而,我需要将其中一些默认选中。Rails文档没有指定如何实现。有什么办法吗?怎么做?
以下是Rails 4的操作方法,我没有检查老版本的文档。
<%= check_box("tag", tag.id, {checked: true}) %>
这将使复选框被选中。当然,您将放置一些逻辑来确定每个复选框是否被选中,而不是true
。
f.check_box :my_check, { class: 'custom-control-input', checked: @model.check }
- Mohamed AbuIssa新建
时选中check_box,并在编辑
时正确填充,可以这样做:
<%= f.check_box :subscribe, checked: @event.new_record? || f.object.subscribe? %>
正如我在这里所提到的。<%= check_box "tag", "enabled", {}, "1", "0" %>
<%= f.check_box :enabled %>
<%= check_box_tag "name", value, true %> # true or false
check_box_tag
有一种设置为已选中的方法,而不是使用check_box
。使用check_box_tag
,您可以将其设置为true
,以便它已经被选中。更多信息请参见:http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-check_box_tag
这个答案仅与f.check_box
有关
f.check_box
最多可以接受4个参数:
因此,如果您的布尔字段存储为1或0(Rails的默认值),那么一切都很好。Rails将识别字段是否被选中。
但是,如果您使用不同的数据存储或框架以另一种格式存储布尔值,则需要指定哪些值对应于选中和未选中。
以下是一个示例:
<%= f.check_box :accept_privacy_policy, { class: 'my-class' }, "true", "false" %>
参考文献
params
哈希不兼容,因此目前我正在使用类似于这样的东西。# ApplicationHelper
def resolve_boolean_parameter resource, attribute, options = {}
default = options.delete(:default)
return default unless params[:utf8]
return params[resource][attribute] == "1"
end
然后在视图中:
<div><%= f.label :accepts_newsletter, "Receive Newsletters" %>
<%= f.check_box :accepts_newsletter, :checked => resolve_boolean_parameter(:user, :accepts_newsletter, default: true) %>
</div>
def check_if_true(item)
ActiveModel::Type::Boolean.new.cast(item)
end
<%= check_box("test", "active", {checked: check_if_true(@test.active) , :multiple => true, :style => "margin-left: 16px;"}, "true", "false") %>
def check_if_true(item) item == true || item == 'true' || item == 1 || item == '1' end
? - fatuhokudef check_if_true(item) ActiveModel::Type::Boolean.new.cast(item) end
- Vishal<%= form.check_box :with_cost, checked: true, class: '', type: 'checkbox', id: 'cost' %>
使用 checked: true
属性。
希望这可以帮到你。