Я пытаюсь назначить команду игроку. У игрока может быть много команд, но при начальной настройке у него есть только одна команда. Я пытаюсь настроить выбор, чтобы пользователь мог выбрать команду.
Когда я отправляю форму данные для других полей, first_name и last_name отправляют штраф, однако никакие данные не сохраняются в соединительной таблице. Я использую флажок выбора, однако флажки тоже будут работать, если кто-то может подумать об этом.
Модель
У меня 2 модели. Игроки и команды настроены на отношения HABTM.
class Player < ActiveRecord::Base
has_and_belongs_to_many :teams
class Team< ActiveRecord::Base
has_and_belongs_to_many :players
Контроллер
def new
@player = Player.new
end
def create
@player = Player.new(params[:player])
if @player.save
flash[:notice] = "Player Created"
redirect_to(:action =>'list')
else
render('new')
end
end
Присоединиться к столу
Я могу вставить данные в таблицу соединений из консоли rails. Затем я могу получить эти данные и показать их. Так что отношения работают.
create_table "players_teams", :id => false, :force => true do |t|
t.integer "player_id"
t.integer "team_id"
end
add_index "players_teams", ["player_id", "team_id"], :name => "index_players_teams_on_player_id_and_team_id"
View
На мой взгляд, у меня есть
<%= f.collection_select(:team_id, Team.all, :id, :name, :prompt => true) %>
Это загружает представление с заполненными командами. После отправки я получаю
Parameters: {"utf8"=>"✓", "authenticity_token"=>"kvOmx3G5H1mqLMnEn6HS3a79+WQnIzfsUA3Dt0XHo1w=", "player"=>{"first_name"=>"Test", "last_name"=>"Data", "email"=>"email@email.com"}, "teams"=>{"team_id"=>"1"}, "commit"=>"create player"}
Я не уверен, куда идти отсюда.