Tengo dos modelos con una relación de muchos a muchos usando has_and_belongs_to_many
. De este modo:Cómo asociar un nuevo modelo con modelos existentes usando has_and_belongs_to_many
class Competition < ActiveRecord::Base
has_and_belongs_to_many :teams
accepts_nested_attributes_for :teams
end
class Team < ActiveRecord::Base
has_and_belongs_to_many :competitions
accepts_nested_attributes_for :competitions
end
Si suponemos que ya he creado varias competiciones en la base de datos, cuando se crea un nuevo equipo, me gustaría usar una forma anidada para asociar el nuevo equipo con cualquier competición pertinentes.
Es en este punto en adelante que realmente necesito ayuda (¡he estado atascado en esto durante horas!) Y creo que mi código actual ya se ha equivocado, pero lo mostraré por si acaso:
class TeamsController < ApplicationController
def new
@team = Team.new
@competitions.all
@competitions.size.times {@team.competitions.build}
end
def create
@team = Team.new params[:team]
if @team.save
# .. usual if logic on save
end
end
end
Y la vista ... aquí es donde estoy realmente atascado, así que no publicaré mis esfuerzos hasta el momento. Lo que me gustaría es una lista de casillas de verificación para cada competencia para que el usuario pueda seleccionar las competencias apropiadas y dejar sin marcar aquellas que no lo son.
estoy realmente atascado con éste de manera apreciar cualquier apuntando en la dirección correcta que se puede brindar :)
Gracias por su respuesta (y sugerencias para tomar un par de días para responder). Tu solución funciona bien, aunque tardé un poco en averiguar cómo crear el formulario. Para el beneficio de cualquier otra persona tropezando con esto, mientras que el formulario Team se genera utilizando form_for helper, para la parte de competencias creé manualmente las casillas de verificación como sigue: <% = check_box_tag "team [competitions] []", competition. id, @ team.competitions.include? (competition),: id => "team_competitions _ # {competition.id}"%> – aaronrussell