Ich versuche, eine Dropdown-Auswahl auf einem Formular zu erstellen. Ich habe eine HABTM Assoziation zwischen Professoren und Klassenzimmer:HABTM Assoziation Dropdown wählen
Klassenzimmer Modell:
class Classroom < ApplicationRecord
has_and_belongs_to_many :professors
end
Professor Modell:
class Professor < ApplicationRecord
has_and_belongs_to_many :classrooms
end
Starke Params:
def classroom_params
params.require(:classroom).permit(:name, :professor_ids => [])
end
Ich versuche, eine finden Weg, f.select
anstelle von select_tag
innerhalb des Formulars zu verwenden. Aber wenn ich es mache, speichert die Datenbank die Werte nicht. Auf diese Weise funktioniert:
<%= form_for @classroom do |f| %>
<%= f.label :name %><br>
<%= f.text_field :name %><br>
<% array = Professor.all.map { |professor| [professor.user.name, professor.id] } %>
<%= select_tag "classroom[professor_ids][]", options_for_select(array) %>
<% end %>
aber ich mag, dass ich versucht und es funktioniert nicht:
<%= form_for @classroom do |f| %>
<%= f.label :name %><br>
<%= f.text_field :name %><br>
<% array = Professor.all.map { |professor| [professor.user.name, professor.id] } %>
<%= f.select :professor_ids, options_for_select(array) %>
<% end %>
Die Ansicht richtig funktioniert, aber wenn ich das Formular abschicken, wird der Wert gehen nicht auf die klassenzimmer_params. Ich habe versucht, es zu debuggen, den Controller zu stoppen, nachdem der einreichen und ich habe dies:
Die params kam korrekt mit allen Informationen vorgelegt, aber die classroom_params kamen die professor_ids fehlt. Gibt es eine Möglichkeit, dieses Dropdown mit f.select
zu tun?
Was ist 'cfg' im Controller? Bitte fügen Sie den Controller-Code bei. –
Es ist nur etwas, was ich geschrieben habe, um es zu stoppen und dann die Parameter bei der Eingabeaufforderung zu sehen. –