【问题标题】:Rails 6: How to require at least one check box in collection_check_boxesRails 6:如何在 collection_check_boxes 中要求至少一个复选框
【发布时间】:2021-08-06 06:02:06
【问题描述】:

对于大多数 Rails 表单输入,您可以使用 required: true 来要求输入。 collection_check_boxes 是否有等价物?我试过了:

<%= f.collection_check_boxes :category_ids, Category.all, :id, :name, {}, {required: true} do |c| %>
    <%= c.check_box %>
    <%= c.label %>
<% end %>

这会将 required 放在每个单独的复选框上,这不是我想要的。有没有办法在没有控制器验证的情况下做到这一点?

【问题讨论】:

  • Javascript。 HTML 中的 required 属性适用于单个元素。如果你想要更高级的验证逻辑,你需要自己实现。

标签: ruby-on-rails forms ruby-on-rails-6


【解决方案1】:

例如,您需要为需要列的类别构建一个动态列表,并在此基础上将 required: true 传递给特定的复选框。

categories_hash = [{id: 1, name: 'Bananas', required: false}, {id: 2, name: 'Apples', required: true}]

然后通过将c[:required] 传递给所需的复选框,它可能会像这样(我没有测试过)

<%= f.collection_check_boxes :category_ids, categories_hash.map {|k| k[:name]}, :id, :name do |c| %>
  <%= c.check_box, required: c[:required] %>
  <%= c.label %>
<% end %>

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2014-04-09
  • 1970-01-01
  • 2015-01-14
  • 1970-01-01
  • 1970-01-01
  • 2011-02-18
  • 2022-01-11
相关资源
最近更新 更多