Форма HABTM не представляет более одного значения в рельсах - PullRequest
1 голос
/ 28 марта 2012

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

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

Модели Есть 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}) %>

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

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

1 Ответ

0 голосов
/ 28 марта 2012

Вы должны передать объект в 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: через требуется сначала.

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