如何在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 中为带有单选按钮的帖子分配一个类别?

Rails 5 ajax 表单:单击 Ajax 中的 2 个单选按钮之一提交表单

rails,simple_form,保存后如何使用所选选项更新单选按钮?

表单验证失败后表单上的单选按钮无法正确呈现 - 引导

Rails 单选按钮:根据模型/数据库条目设置默认值

从 Rails 4 视图上的单选按钮获取输入