J'ai un modèle Journey qui a de nombreux utilisateurs (pilotes). Je veux pouvoir avec l'aide de accept_nested_attributes_for ajouter et supprimer des pilotes d'un voyage. Lorsque j'ajoute un pilote, je veux montrer à l'utilisateur < sélectionner > où elle peut sélectionner l'un des utilisateurs pour être l'un des pilotes appartenant à ce voyage particulier. Je suis venu à long:accepte_nested_attributes_for et collection_select comment créer la vue?
# Models
class Journey < ActiveRecord::Base
has_many :drivers
accepts_nested_attributes_for :drivers, :allow_destroy => true
has_many :users, :through => :drivers
accepts_nested_attributes_for :users
end
class Driver < ActiveRecord::Base
belongs_to :journey
belongs_to :user
end
class User < ActiveRecord::Base
has_many :drivers
has_many :journeys, :through => :drivers
end
# View _form.html.erb
<% form_for(@journey) do |f| %>
<%= f.error_messages %>
<% f.fields_for :drivers do |d| %>
<%= render :partial => 'driver', :locals => { :f => d } %>
<% end %>
<p><%= f.submit 'Submit' %></p>
<% end %>
# View _driver.html.erb
<p><%= f.collection_select(:id, User.all, :id, :name)%></p>
L'erreur dit:
ActiveRecord::AssociationTypeMismatch in JourneysController#create
Driver(#2185315860) expected, got Array(#2151950220)
Je soupçonne que mon _driver.html.erb est mal, mais je ne sais pas comment le résoudre. Pourriez-vous s'il vous plaît m'aider avec quelques conseils ici?
Merci! C'était le problème, et maintenant il est réparé :) – Jeena