2017-05-12 7 views
0

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 

Répondre

0

Vous souhaitez affecter plus d'un Category à votre Model? Postez votre modèle afin que nous puissions comprendre ce qui ne va pas lorsque vous le stockez.

Ajout de multiple: true (et size: 5) va élargir votre champ de sélection et en maintenant ctrl/cmd vous pouvez sélectionner plusieurs entrées.

<%= f.collection_select :category_ids, Category.all, :id, :name, {multiple: true, size: 5} %> 
+0

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. –

+0

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

+0

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 –