class EventTeam < ActiveRecord::Base
belongs_to :event
belongs_to :team
end
class Event < ActiveRecord::Base
has_many :event_teams
has_many :teams, through: :event_teams
end
class Team < ActiveRecord::Base
has_many :event_teams
has_many :events, through: :event_teams
end
beitritt Ich versuche, die hinzuzufügen: event_id und: team_id zum Eventteam Tisch kommen, wenn ein neues Ereignis erstellen und kann nicht scheinen, um herauszufinden, wie trotz einer erschöpfenden Suche von ähnlichen Fragen wie: how to add records to has_many :through association in rails (Ich habe alle diese Vorschläge versucht)Schienen hinzufügen Datensatz has_many: durch Tabelle
Es scheint, dass das folgende funktionieren sollte, obwohl ein NoMethodError geliefert wird: "undefined Methode` Ereignisse 'für #ActiveRecord :: Relation [] "
EreignisseController
def new
@event = Event.new(:team_id => params[:team_id])
end
def create
@team = Team.where(:id => params[:team_id])
@event = @team.events.create(event_params)
if @event.save
flash[:success] = "Event created!"
redirect_to @event
else
render 'new'
end
end
Ich habe eine ähnliche Situation in der gleichen App mit Benutzern, Teams und Mitgliedschaften (Join-Tabelle). Der folgende Code fügt der Tabelle "Mitgliedschaften" automatisch Folgendes hinzu: team_id und: user_id, wenn ein Benutzer ein neues Team erstellt.
TeamsController
def new
@team = Team.new(:user_id => params[:user_id])
end
def create
@team = current_user.teams.create(team_params)
if @team.save
flash[:success] = "Team created!"
redirect_to @team
else
render 'new'
end
end
Vorschläge, wie dies zu erreichen?
aus irgendeinem Grund verwenden, erhalte ich die Fehlermeldung „konnte nicht-Team finden mit‚id‘= Wenn ich gerade auf 1 statt params [: team_id], wird das Ereignis erstellt und Datensatz hinzugefügt zur Join-Tabelle - so funktioniert .find statt .where funktioniert definitiv. Der seltsame Teil ist, ich kann team_id = 1 in der URL für den Pfad new_event sehen. – ncarroll
@ncarroll Was sind die Parameter, die für diese Aktion generiert werden? – Pavan
{ "UTF-8" => "✓", "authenticity_token" => "EryBDSRyQWO3zEXCjjz0J/Y9IOy0bfCw5tVhMnN + MiG0cOyJYWIWPNVihVbyP9C36raLXZ8B2uN8HR9PlCqTzg ==", "Ereignis" => { "Datum" => "2016.04.20", „name "=>" test ", " location "=>" test ", " venue "=>" test ", " team_id "=>" 1 "}, " commit "=>" Ereignis erstellen "} – ncarroll