J'ai ceci:Deux collection_select qui permettent d'économiser comme deux enregistrements différents
<%= f.collection_select :category_ids, Category.all, :id, :name, {} %>
dans ma forme et il crée le dossier aucun problème, mais je suis perdu sur la façon de faire plus de deux ou plusieurs enregistrements dans le même forme, toutes les choses que j'essaie soit de créer le seul enregistrement ou pas du tout. J'ai trouvé cette solution, que j'étais sûr et analysé était le travail va (barbante Je ne comprends pas vraiment pourquoi il utilise nul):
<%= f.fields_for :category_ids do |category| %>
<%= category.collection_select(nil, Category.all, :id, :name,
{include_blank: "---", selected: 0},
{id: :event_category_id_1}) %>
<%= category.collection_select(nil, Category.all, :id, :name,
{include_blank: "---", selected: 0},
{id: :event_category_id_2}) %>
<% end %>
mais cette fois il ne crée pas du tout enregistrement.
Voici mes modèles:
class Event < ApplicationRecord
has_many :categorizations
has_many :categories, through: :categorizations
accepts_nested_attributes_for :categorizations
end
class Category < ApplicationRecord
has_many :categorizations
has_many :events, through: :categorizations
end
class Categorization < ApplicationRecord
belongs_to :event
belongs_to :category
end
Vous pouvez bien sûr améliorer l'interface utilisateur, copier les catégories sélectionnées dans une liste en dessous de la balise de sélection, ce genre de choses. –
J'ai vu que vous pouvez utiliser l'option multiple: mais je pense qu'il est un peu difficile pour l'utilisateur de sélectionner plusieurs, est-il possible d'avoir deux collection_select (ou même une sélection simple) qui créent deux enregistrements différents dans le même forme? – Bluespheal
Ah, vous avez un 'has_many through', vos champs doivent être pour': categorisations'. Lire à thinkbot comment faire ces https://robots.thoughtbot.com/accepts-nested-attributes-for-with-has-many-through –