Rails中的CoffeeScript基于Collection Select切换div

时间:2016-04-16 13:17:23

标签: jquery html ruby-on-rails forms coffeescript

我有一个使用基本形式的Rails应用程序,我需要一些coffeescript的帮助。以下是我的表单代码的摘录:

$src

我想要发生的事情是保持 <%= f.label :Patient_Insurance, "Patient Insurance", class: "control-label" %> <%= f.collection_select(:insurance_id, Insurance.order("insurance_type ASC"), :id, :insurance_type, {:include_blank => true}, {:class => 'select'}) %></br> <div id="medicaid_fax_number"> <%= f.label :medicaid_fax_number %> <%= f.text_field :medicaid_fax_number, placeholder: '2812224444' %> </div> 字段始终隐藏,除非用户从collection_select中选择“Medicaid”,然后显示div。

我在JS和Coffee脚本上真的很生气,所以我真的可以用这一手了。我知道我正在注意改变的是medicaid_fax_number(这是保险收集选择表格中的ID)。但我不确定coffeescript如何评估该值是否等于“Medicaid”。

我将继续做更多的研究并继续努力,但我认为这里的人比我能帮助的人更有知识。

2 个答案:

答案 0 :(得分:0)

对于动态解决方案,在您向保险模型添加类似&#34; need_medicaid_fax_number&#34;之类的列之后类型是布尔值。您可以通过以下方式更新:

<强> .erb

<%= f.label :Patient_Insurance, "Patient Insurance", class: "control-label" %>
<%= f.select :insurance_id, {include_blank: "Select"}, class: "select" do %>
  <%= options_for_select(Insurance.order("insurance_type ASC").map {|k, v| [k.insurance_type.humanize, k.id, {show_medicaid_fax_number: k.need_medicaid_fax_number?}]}, f.object.insurance_id, )%>
<%= end %>
</br>
<div id="medicaid_fax_number">
    <%= f.label :medicaid_fax_number %>
    <%= f.text_field :medicaid_fax_number, placeholder: 'Fax number' %>
</div>

<强> .coffee

$ ->
  $('#call_insurance_id').change ->
    option = $(this).find('option:selected')
    if option.attr("show_medicaid_fax_number") is "true"
      $('#medicaid_fax_number').show()
    else
      $('#medicaid_fax_number').hide()

答案 1 :(得分:0)

  $ ->
  $('#call_insurance_id').change ->
    if $(this).val() is "12"
      $('#medicaid_fax_number').show()
    else
      $('#medicaid_fax_number').hide()

这很好用,但是我必须将保险类型的ID硬编码到CoffeeScript中。我真的希望能够根据字符串&#34; Medicaid&#34;进行评估。有人可以帮忙吗?