Ich habe ein Formular, in dem der Benutzer (mit Radio-Buttons) eine Option auswählen muss, die das nächste Formularfeld darunter bestimmt. In diesem Fall kann ihr Beitrag ein Beitrag oder eine Überarbeitung eines Beitrags sein. Daher zeigt die Auswahl von 'Beitrag' ein Titelfeld an (um den Beitrag zu benennen) und die Auswahl von 'Überarbeitung' zeigt eine Auswahlliste von vorhandenen Beiträgen an, aus der ausgewählt werden kann (der Titel wird übernommen).
_form.html.erb
<%= f.collection_radio_buttons :is_revision, [[false, 'Beitrag'], [true, 'Überarbeitung']], :first, :last %>
<%= f.input :revision_id, collection: @originals, :input_html => {:id => 'revision'} %>
<%= f.input :title, :input_html => { :maxlength => '50', :placeholder => 'Titel', :id => 'title'} %>
$('input[name="post[is_revision]"]').on("change", function(){
if ( $("#post_is_revision_true").attr("checked")){
$("#title").hide();
$("#revision").show();
}
if ( $("#post_is_revision_false").attr("checked")){
$("#revision").hide();
$("#title").show();
}
});
Ich sollte erwähnen, dass dies einwandfrei funktioniert, wenn ein Feld ausgeblendet und das andere angezeigt wird, aber wenn das andere Optionsfeld ausgewählt wird, ändert sich nichts. Ich glaube, die Logik ist korrekt (obwohl ich in JS nicht der Stärkste bin), aber ich scheine das nicht hin zu bekommen.