Форма HABTM не отправляет более одного значения в рельсы

Я пытаюсь назначить группу игроков на приспособление через форму.

Я пытался перечислить всех игроков из моей таблицы players с помощью флажков, чтобы пользователь мог выбрать, каких игроков он хочет для приспособления.

Модели Есть 3 модели со светильниками и проигрывателями.

class Fixture < ActiveRecord::Base
belongs_to :team
has_many :player_fixtures
has_many :players, :through => :player_fixtures
has_one :venue

class Player < ActiveRecord::Base
has_and_belongs_to_many :teams
has_many :player_fixtures
has_many :fixtures, :through => :player_fixtures

class PlayerFixture < ActiveRecord::Base
belongs_to :player
belongs_to :fixture

Мне нужно использовать :through, как при ассоциации игроков и приборов. Мне нужно логическое значение, заплатил ли этот человек.

Эти ассоциации работают, и я могу назначить игрока на прибор в таблице соединений через консоль.

Просмотры На мой взгляд, у меня есть:

 <%= form_for(:fixture, :url => {:action =>'create'}) do |f| %>

Это код, который я пытался заставить работать в данный момент!

 <%= f.collection_select(:player, :player_id, @players,:id, :name, { :include_blank => true ,:multiple => true}) %>

ИЗМЕНИТЬ

Теперь я вставил комментарий ниже, а также изменил выбор коллекции на:

 <%= f.collection_select(:player_ids, Player.all,:id, :name, {:include_blank => true ,:multiple => true}) %> 

На данный момент я получаю следующую ошибку при попытке загрузить форму:

undefined method `merge' for :name:Symbol

на этой линии

 28:       <td><%= f.collection_select(:fixture, :player_id, Player.all,:id, :name, { :include_blank => true ,:multiple => true}) %>

Это, вероятно, ужасно неправильно, однако мне действительно нужно, чтобы это работало, так как это большая часть моего проекта.

Может ли кто-нибудь указать мне в правильном направлении? Если кто-то хочет послать по формастическому маршруту, не стесняйтесь, так как я тоже не могу получить эту работу.


person JPKnegte    schedule 27.03.2012    source источник


Ответы (1)


Вы должны передать объект в form_for вместо символа:

<%=form_for(:fixture, :url => {:action =>'create'}) do |f| %>

должно быть

<%= form_for(@fixture, :url => {:action =>'create'}) do |f| %>

Обновление:

Похоже, вы не определили has_many :player_fixtures в модели Fixture, сначала это потребовалось has_many :through .

class Fixture < ActiveRecord::Base
belongs_to :team
has_many :player_fixtures
has_many :players, :through => :player_fixtures
has_one :venue
person Hoang Nghiem    schedule 28.03.2012
comment
Я сделал это, но я все еще получаю некоторые ошибки! см. правку - person JPKnegte; 28.03.2012
comment
Сделано это, однако раздражает еще одна ошибка! Спасибо за вашу помощь - person JPKnegte; 29.03.2012