如何将单选按钮的所有值以 Formtastic 形式传递给控制器

How to pass all values of radio button to controller in Formtastic form

所以我面临的一个问题是在按下提交按钮时将所有复选框值获取到控制器

索引:

= semantic_form_for :account do |form|
  = render form, form: form
  = form.actions do
    = form.action :submit

形式:

- current_user.organizations.each do |organization|
  - accounts = organization.accounts
    %label
      = organization.name
        - accounts.each do |account|
          = form.fields_for organization.id.to_s, account do |f|
            = f.hidden_field :id
            = f.radio_button :active, 1, checked: account.active
            = f.label account.name

目前只传递经过检查的数据:假设我们确实有 2 个组织有多个帐户,您确实检查了两个组织的单选按钮,在我的情况下,将发送到控制器的参数将仅是经过检查的参数, 比如:

Parameters: {"utf8"=>"✓", "authenticity_token"=>"...", "account"=>{"organization.id"=>{"id"=>"account.id", "active"=>"1"}, "5"=>{"id"=>"account.id", "active"=>"1"}}, "commit"=>"Submit"}

但我希望将所有单选按钮都设置为参数,而不仅仅是单击的单选按钮,所以最后,参数将包含一个完整列表,然后我可以在控制器中使用它们

你不能。浏览器永远不会发送任何未选中的按钮(无论是单选按钮还是复选框),只会发送已选中的按钮。

你可以做的是使用复选框。 Rails 将为您添加一个值为“0”的隐藏字段,只有当复选框未选中时您才会收到。

https://api.rubyonrails.org/classes/ActionView/Helpers/FormBuilder.html#method-i-check_box