【问题标题】:How to use radio button correctly in rails?如何在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”。然后我想要一个“是”的标签,如果选择它将设置为真,然后显然下一个是假的。如何正确设置?

【问题讨论】:

    标签: ruby-on-rails radio-button boolean


    【解决方案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 我在另一个答案中提到了这个问题
    猜你喜欢
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    • 2017-12-31
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    相关资源
    最近更新 更多