J'essaie de créer une sélection déroulante dans un formulaire. J'ai une association HABTM entre les professeurs et les salles de classe:Liste déroulante d'association HABTM sélectionnez
Modèle Classe:
class Classroom < ApplicationRecord
has_and_belongs_to_many :professors
end
Professeur Modèle:
class Professor < ApplicationRecord
has_and_belongs_to_many :classrooms
end
Params forts:
def classroom_params
params.require(:classroom).permit(:name, :professor_ids => [])
end
Je suis en train de trouver un façon d'utiliser f.select
au lieu de select_tag
à l'intérieur du formulaire. Mais quand je le fais, la base de données n'enregistre pas les valeurs. De cette façon fonctionne:
<%= 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 %>
Mais je suis en train comme ça et il ne fonctionne pas:
<%= 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 %>
La vue fonctionne correctement, mais lorsque je soumets la forme, la valeur ne va pas à la classroom_params. J'ai essayé de déboguer arrêter le contrôleur après la soumettre et je suis arrivé ceci:
Les params sont venus correctement avec toutes les informations fournies, mais les classroom_params venu manquer les professor_ids. Existe-t-il un moyen de faire cette liste déroulante en utilisant f.select
?
Qu'est-ce que 'cfg' dans le contrôleur? Veuillez attacher le code du contrôleur. –
C'est juste quelque chose que j'ai écrit pour l'arrêter et ensuite voir les paramètres à l'invite. –