【问题标题】:Multiple radio button groups who send data in an array以数组形式发送数据的多个单选按钮组
【发布时间】:2014-05-27 04:29:55
【问题描述】:

我尝试了以下方法:

<%= form_for .... do |f| %>
    <%= f.label "test1" %>
        <%= radio_button_tag 'value[]', "1" %>
        <%= radio_button_tag 'value[]', "2" %>
    <%= f.label "test2" %>
        <%= radio_button_tag "value[]", "1" %>
        <%= radio_button_tag "value[]", "2" %>
    <%= f.submit "test_send" %>
<% end %>

在我的控制器中,我有一个数组。

现在的问题是我只能选择这四个中的一个,但我想在分组后选择它们。使用 text_fields 可以正常工作,但使用单选按钮则无法使用。

然后我尝试了类似的东西:

<%= form_for .... do |f| %>
    <%= f.label "test1" %>
        <%= radio_button_tag 'value[]', "1", :id => "btn-grp-1"  %>
        <%= radio_button_tag 'value[]', "2", :id => "btn-grp-2"  %>
    <%= f.label "test2" %>
        <%= radio_button_tag "value[]", "1", :id => "btn-grp-3"  %>
        <%= radio_button_tag "value[]", "2", :id => "btn-grp-4"  %>
    <%= f.submit "test_send" %>
<% end %>

拥有唯一的 id 但仍然是同样的问题。 我需要的是为每个组设置一个唯一的名称,例如:

<%= form_for .... do |f| %>
    <%= f.label "test1" %>
        <%= radio_button_tag 'value[1]', "1", :id => "btn-grp-1"  %>
        <%= radio_button_tag 'value[1]', "2", :id => "btn-grp-2"  %>
    <%= f.label "test2" %>
        <%= radio_button_tag "value[2]", "1", :id => "btn-grp-3"  %>
        <%= radio_button_tag "value[2]", "2", :id => "btn-grp-4"  %>
    <%= f.submit "test_send" %>
<% end %>

但是我现在如何获取参数呢?

我的控制器只包含用于测试发送内容的代码:

...
def create

    flash[:success] = valueset_params[:value]
    redirect_to root_path
end


private

def valueset_params
  params.permit({value: []})
end
...

希望你明白我的意思。 (我必须更改单选按钮的名称,我仍然希望在我的控制器中接收完整的数组)。

如果你不知道就问。

感谢您提出任何解决方案。


编辑另一个问题:

我有类似@topics 的东西,里面有多个主题。 现在我想循环它们(我知道这是如何工作的)并在 []

中写入变量值
<%= form_for .... do |f| %>
  <%= f.label 'test1' %>
    <%= radio_button_tag 'value[@topic1.id]', '1' %>
    <%= radio_button_tag 'value[@topic1.id]', '2' %>
  <%= f.label 'test2' %>
    <%= radio_button_tag 'value[@topic2.id]', '1' %>
    <%= radio_button_tag 'value[@topic2.id]', '2' %>
  <%= f.submit 'test_send' %>
<% end %>

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    试试这个,让我知道会发生什么:

    <%= form_for .... do |f| %>
      <%= f.label 'test1' %>
        <%= radio_button_tag 'value[group_one]', '1' %>
        <%= radio_button_tag 'value[group_one]', '2' %>
      <%= f.label 'test2' %>
        <%= radio_button_tag 'value[group_two]', '1' %>
        <%= radio_button_tag 'value[group_two]', '2' %>
      <%= f.submit 'test_send' %>
    <% end %>
    

    您应该能够使用params[:value] 然后params[:value][:group_one]params[:value][:group_two] 在控制器中获取数据。

    【讨论】:

    • 很好,这对我有用。我将在上面更新我的问题,因为我还有另一个问题。也许你可以再次帮助我。 :)
    • 对于您的第二个问题,只需使用 "value[#{topic.id}]" 和周围的循环 @topics.each do |topic| ... end
    • 谢谢!我试了这么久。惊人的答案!
    猜你喜欢
    • 2015-04-17
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    • 2014-01-24
    • 2018-08-04
    • 2019-06-21
    相关资源
    最近更新 更多