2016-04-16 11 views
0

Ich habe eine Rails App mit einer etwas einfachen Form und ich brauche etwas Hilfe mit etwas coffeescript. Hier ein Auszug meiner Form Code:CoffeeScript in Rails toggle div basierend auf Collection Select

<%= 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> 

Was ich passieren soll, ist das Feld immer verborgen zu halten, es sei denn, ein Benutzer wählt „Medicaid“ aus dem collection_select, dann die div anzuzeigen.

Ich bin wirklich auf JS und Kaffee Skript rostig, so dass ich wirklich eine Hand mit diesem verwenden konnte. Ich weiß, dass die Sache, die ich beobachte, zu ändern ist die call_insurance_id (die die ID in dem Formular für die Versicherungssammlung ist, wählen). Aber ich bin nicht sicher in Coffeescript, wie man beurteilt, ob der Wert "Medicaid" gleich ist oder nicht.

Ich werde weiterhin etwas mehr Forschung betreiben und weiter daran arbeiten, aber ich dachte jemand hier mehr kenntnisreich als ich helfen könnte.

Antwort

0

Wenn Sie zu Ihrem Versicherungsmodell eine dynamische Lösung hinzufügen, wird eine Spalte wie "need_medicaid_fax_number" mit type boolean angezeigt. Sie können unten durch die Art und Weise aktualisieren:

.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() 
+0

Danke für den Tipp, aber das hat nicht für mich funktioniert. Ich habe eine Chrome-Überprüfung durchgeführt und keine Fehler in der Konsole angezeigt. Daher bin ich mir nicht sicher, wo das Problem liegt. Sieh dir die Antwort an, die ich gepostet habe, um zu arbeiten. Es wird von der ID der Versicherung ausgewertet, aber ich möchte die Zeichenfolge "Medicaid" auswerten. Lass es mich wissen, wenn du helfen kannst. – nulltek

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

Das funktioniert perfekt, aber ich habe die ID des codieren Versicherungstyp in CoffeeScript. Ich möchte wirklich anhand der Zeichenfolge "Medicaid" bewertet werden können. Kann jemand helfen?