使用 Rails 3.2 和 Rails 表单 - 不知道如何在单选按钮选中时显示输入文本字段,否则隐藏它

Using Rails 3.2 and Rails form - don't know how to display an input text field when a radio button is checked true and hide it otherwise

我在这里获取了几个帖子,但我仍然无法让它工作。 当 "Other" 单选按钮被选中时,我希望 f.text_field 显示出来,什么时候取消选中被隐藏。 我希望之后能够为 thr 属性 f.client_consent_refusal_reason.

输入文本值

这是我的 HTML:

<table>
  <tr>
    <td>
      <%= form_for(@client, :url => {:controller => 'client', :action=> :outcome_consent_complete, :id => @client.id }) do |f| %>
        <%= f.radio_button :client_consent_refusal_reason, 'Hearing loss', :checked => false %>
        <%= f.label :radio_button_label, 'aaa' %>
        <br>
        <%= f.radio_button :client_consent_refusal_reason, 'bbb', :checked => false %>
        <%= f.label :radio_button_label, 'ccc' %>
        <br>
        <%= f.radio_button :client_consent_refusal_reason, 'ddd', :checked => false %>
        <%= f.label :radio_button_label, 'eee' %>
        <br>
        <%= f.radio_button :client_consent_refusal_reason, 'fff', :checked => false %>
        <%= f.label :radio_button_label, 'ggg' %>
        <br>
        <%= f.radio_button :client_consent_refusal_reason, 'Other', :checked => false %>
        <%= f.label :radio_button_label, 'Other' %>
        <%= f.text_field :client_consent_refusal_reason %>
        <br><br>
        <div class="actions">
          <%= f.submit 'Submit' %>
        </div>
      <% end %>
    </td>
  </tr>
</table>

当检查上述任何一个无线电按钮时,应该将字段client_consent_refusal_reason设置为关联值,但是当检查其他值时,我希望能够捕获通讯值。

我不知道如何解决这个问题。

我替换了这部分代码:

<%= f.radio_button :client_consent_refusal_reason, 'Other', :checked => false %>
<%= f.label :radio_button_label, 'Other' %>
<%= f.text_field :client_consent_refusal_reason %>

有了这个:

<%= f.radio_button :client_consent_refusal_reason, 'Other', :checked => false,
    :onchange => "$('other_reason_input')[this.checked ? 'show' : 'hide']();" %>
<%= f.label :radio_button_label, 'Other (please list): ' %>

<div id="other_reason_input" style="display:none;">
  <%= f.text_field :client_consent_refusal_reason_other %>
</div>

并且在模型 class 中我不得不添加这些行:

  attr_accessor :client_consent_refusal_reason_other

  def client_consent_refusal_reason_other=(value)
    self.client_consent_refusal_reason = value if client_consent_refusal_reason == 'Other'
  end

  def client_consent_refusal_reason_other
    client_consent_refusal_reason
  end

现在一切正常。