我很难做到这一点。我有一个数组@names = ['abc', 'bbc', 'xyz']
,我正在构建单选按钮,如下所示。
<% @names.each do |n| %>
<%= f.radio_button :name, n, :checked => "checked" %>
<%= f.label :name, n.capitalize %>
<% end %>
我有另一个变量@select = 'bbc'
,其中包含必须在上述单选按钮中选择的字符串。目前最后一个单选按钮正在检查,即'xyz'
。如何实现这一目标。请帮忙。
答案 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 %>
真的只是个人偏好,但所有事情都相同(例如可读性),代码越少越好。