2016-08-03 10 views
0

Ich habe ein Problem mit mehreren Radio-Button-Gruppen in meiner Rails App, wo der checked Status nicht korrekt angewendet wird. Lassen Sie mich brechen sie für Sie ...Schienen Formular - Radio Button überprüft Status nicht korrekt anwenden

Die Form hat vier Gruppen von Optionsfeldern in einer Reihe, die jeweils erzeugt mit dem collection_radio_buttons Form Helfer:

Left buffer width 
<%= collection_radio_buttons("", "", @bufferWidthScore, :id, :display) do |b| %> 
    <%=j b.label(class: "left_buffer_width_label") %> 
    <%=j b.radio_button(class: "left_buffer_width") %> 
<% end %> 

Right buffer width<%= collection_radio_buttons("", "", @bufferWidthScore, :id, :display) do |b| %> 
    <%=j b.label(class: "right_buffer_width_label") %> 
    <%=j b.radio_button(class: "right_buffer_width") %> 
<% end %> 

Left buffer condition<%= collection_radio_buttons("", "", @bufferConditionScore, :id, :display) do |b| %> 
    <%=j b.label(class: "left_buffer_condition_label") %> 
    <%=j b.radio_button(class: "left_buffer_condition") %> 
<% end %> 

Right buffer condition<%= collection_radio_buttons("", "", @bufferConditionScore, :id, :display) do |b| %> 
    <%=j b.label(class: "right_buffer_condition_label") %> 
    <%=j b.radio_button(class: "right_buffer_condition") %> 
<% end %> 

Ich will es so eingestellt, dass die erste Optionsfeld wird in jeder Gruppe überprüft, und ich hatte einen gewissen Erfolg in diesem, den Weg zur Arbeit, wie so die Optionen Hash-Einstellung:

Left buffer width<%= collection_radio_buttons("", "", @bufferWidthScore, :id, :display, {checked: @bufferWidthScore.first.id}, {}) do |b| %> 
    <%=j b.label(class: "left_buffer_width_label") %> 
    <%=j b.radio_button(class: "left_buffer_width") %> 
<% end %> 

so dies für die erste Gruppe von Optionsfeldern gearbeitet, aber wenn ich es hinzugefügt die zweite Gruppe war nur der erste Radiobutton aus der zweiten Gruppe wa s überprüft, hatte die erste Gruppe keine überprüften Tasten. Ok, ich dachte, das wäre komisch, aber als Test habe ich diesen Code der dritten Gruppe von Optionsfeldern hinzugefügt, die, wie Sie feststellen werden, sich auf ein anderes Modell bezieht (bufferCondition statt bufferWidth) - dasselbe Problem! Es war egal! Jetzt wurde die erste Schaltfläche in der dritten Gruppe überprüft, aber keine der anderen Schaltflächen in den anderen Gruppen.

Zusammenfassend, wenn ich diesen Code in alle vier Schaltflächengruppen einfüge, wird nur die erste Schaltfläche der letzten Gruppe geprüft, unabhängig vom Modell.

Kann jemand erklären, warum das passiert und wie man das löst? Keines der anderen Verhaltensweisen dieser Knopfgruppen scheint sich zu überkreuzen, warum tut dieser?

+0

Hinweis - dies geschieht auch, wenn ich die 'html_options' Hash auf' geprüft: true' auch, obwohl dies die überprüft letzter Knopf in der Gruppe ... – skwidbreth

Antwort

0

Ah, Schrauben Rails, ich habe es nur mit jQuery ...

$(x).next(".sub_report_container").find('.left_buffer_width').each(function(i){ 

    if(i === 0){ 
     $(this).prop("checked", true); 
    }; 

    $(this).attr('name', 'left_buffer_width_' + fieldsetID); 
    $(this).attr("id", "fieldset_" + fieldsetID + "_left_buffer_width_" + i); 
});