单选按钮默认选中基于变量输出的值

时间:2014-06-26 13:54:56

标签: ruby-on-rails

我很难做到这一点。我有一个数组@names = ['abc', 'bbc', 'xyz'],我正在构建单选按钮,如下所示。

<% @names.each do |n| %>
<%= f.radio_button :name, n, :checked => "checked" %>
  <%= f.label :name, n.capitalize %>
<% end %>

我有另一个变量@select = 'bbc',其中包含必须在上述单选按钮中选择的字符串。目前最后一个单选按钮正在检查,即'xyz'。如何实现这一目标。请帮忙。

2 个答案:

答案 0 :(得分:1)

您的代码实际上是将属性checked="checked"设置为每个无线电输入,这是没有意义的,因为无线电按钮用于多个选项中的单个答案

添加一个小测试,只检查一个单选按钮:

<% @names.each do |n| %>
  <%= f.radio_button :name, n, :checked => n == @select %>
  <%= f.label :confidentiality_level, n.capitalize %>
<% end %>

长版:

<% @names.each do |n| %>
  <% if @select == n # tests if n is equal to 'xyz' or whatever %>
    <%= f.radio_button :name, n, :checked => "checked" %>
  <% else %>
    <%= f.radio_button :name, n %>
  <% end %>
  <%= f.label :confidentiality_level, n.capitalize %>
<% end %>

答案 1 :(得分:1)

理想情况下,我只是将其添加为评论,但我现在甚至没有足够的声誉来做到这一点!

只是一个小的重构,checked选项接受一个布尔值,因此不需要三元运算符:http://apidock.com/rails/ActionView/Helpers/FormHelper/radio_button

<% @names.each do |n| %>
  <%= f.radio_button :name, n, :checked => n == @select %>
  <%= f.label :confidentiality_level, n.capitalize %>
<% end %>

真的只是个人偏好,但所有事情都相同(例如可读性),代码越少越好。