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.