如何在rails中正确使用单选按钮?
Posted
技术标签:
【中文标题】如何在rails中正确使用单选按钮?【英文标题】:How to use radio button correctly in rails? 【发布时间】:2013-02-10 04:49:35 【问题描述】:我正在尝试创建一些单选按钮,但不知道该怎么做。在this 问题之后,我的设置工作几乎正确,但我是新手,不知道为什么我不能完全弄清楚。所以我正在做的是放置一个标签来对布尔值进行分组,然后有标记为是和否的单选按钮。如果用户单击是的标签,它应该选择单选按钮是(现在他们只能单击按钮本身)。这是我的代码如下:
<div class="field">
<%= f.label :autolyse %><br />
<%= f.label :autolyse, "Yes", :value => "Yes" %>
<%= f.radio_button :autolyse, true%>
<%= f.label :autolyse, "No", :value => "No" %>
<%= f.radio_button :autolyse, false, :checked => true %>
</div>
第一个标签用于组,它将组标记为“Autolyse”。然后我想要一个“是”的标签,如果选择它将设置为真,然后显然下一个是假的。如何正确设置?
【问题讨论】:
【参考方案1】:如果你想保持选择用户选择的选项,你应该验证参数,是这样的:
<div class="field">
<%= f.label :autolyse %><br />
<%= f.label :autolyse, "Yes", :value => "true" %>
<%= f.radio_button :autolyse, true, !!params[:autolyse] %>
<%= f.label :autolyse, "No", :value => "false" %>
<%= f.radio_button :autolyse, false, !!params[:autolyse] %>
</div>
如果您想从对象属性中执行此操作,只需替换对象属性的 params 变量:
<div class="field">
<%= f.label :autolyse %><br />
<%= f.label :autolyse, "Yes", :value => "true" %>
<%= f.radio_button :autolyse, true, !!@object.autolyse %>
<%= f.label :autolyse, "No", :value => "false" %>
<%= f.radio_button :autolyse, false, !!@object.autolyse %>
</div>
【讨论】:
你也可以用f.object
代替@object
【参考方案2】:
见label(object_name, method, content_or_options = nil, options = nil, &block)
<div class="field">
<%= f.label :autolyse %><br />
<%= f.label :autolyse, "Yes", :value => "true" %>
<%= f.radio_button :autolyse, true %>
<%= f.label :autolyse, "No", :value => "false" %>
<%= f.radio_button :autolyse, false, :checked => true %>
</div>
【讨论】:
谢谢!我编辑了您的答案以准确反映我的目标 看起来虚假单选被硬编码为在页面加载时被选中。您将如何修改它以从对象属性中读取选定的收音机? @Toby1Kenobi 我在另一个答案中提到了这个问题以上是关于如何在rails中正确使用单选按钮?的主要内容,如果未能解决你的问题,请参考以下文章
Rails 5 ajax 表单:单击 Ajax 中的 2 个单选按钮之一提交表单