0

Je suis un peu nouveau pour Ruby on Rails, j'ai lu la documentation sur assosiations et j'ai eu un temps facile (et le plus souvent une recherche rapide sur Google permet de résoudre la plupart de mes doutes) cependant récemment j'ai des problèmes avec une chose apparemment facile à faire.Rails form_for, événement avec la création de la catégorisation

Ce que j'essaye de faire est de créer un événement, lié à une catégorie existante.

modèle d'événement

class Event < ApplicationRecord 

    has_many :categorizations 
    has_many :categories, through: :categorizations 
    accepts_nested_attributes_for :categorizations 
    . 
    . 
    . 
end 

modèle Catégorie

class Category < ApplicationRecord 
    has_many :categorizations 
    has_many :events, through: :categorizations 
end 

modèle Catégorisation

class Categorization < ApplicationRecord 
    belongs_to :event 
    belongs_to :category 
end 

contrôleur de l'événement

class EventsController < ApplicationController 

def new 
    @event = Event.new 
end 

def create 
    @user = User.find(current_user.id) 
    @event = @user.events.create(event_params) 
    if @event.save 
     redirect_to root_path 
    else 
     redirect_to root_path 
    end 
end 

private 

    def event_params 
     params.require(:event).permit(:name, category_ids:[]) 
    end 

est ici la forme, ce qui est là où je pense que le problème est:

<%= form_for @event, :html => {:multipart => true} do |f| %> 

<%= f.label :name %> 
<%= f.text_field :name %> 

<%= f.fields_for :categorizations do |categories_fields|%> 
    <% categories = [] %> 
    <% Category.all.each do |category| %> 
    <% categories << category.name %> 
    <% end %> 

    <%= categories_fields.label :category_id, "Category" %>  
    <%= categories_fields.select (:category_id, categories) %> 

<% end %> 

. 
. 
. 


<%= f.submit "Create"%> 

<% end %> 

Je peuplent déjà la catégorie db avec certaines catégories, donc ce qui reste à faire est de tout en créant un événement, créer aussi une catégorisation est lié à la fois au nouvel événement et à la catégorisation choisie. mais les choses que j'ai essayées ne semblent pas fonctionner.

D'autres choses semblent fonctionner correctement, chaque fois que j'essaie de soumettre l'événement, toutes les choses sont remplies comme prévu, sauf la catégorisation.

Répondre

0

Comme vous l'avez mentionné que vous êtes nouveau sur les rails, vous trouverez ce cocoon gem très intéressant. Vous pouvez réaliser ce que vous vouliez. Et le code sera plus propre.

Je n'ai pas les points à commenter, c'est pourquoi je donne ceci comme réponse.