我想在球员和赛程之间建立多对多的关系。因此,当一名球员参加比赛时,我可以看到球员所参加的比赛以及谁曾参加比赛。
我正在尝试跟踪玩家是否已使用" sub_paid"来支付游戏费用。布尔列。我很难将其设置为真或假。我可以创建一个播放器/夹具记录,但没有sub_paid属性。
class Fixture < ActiveRecord::Base
has_many :player_fixtures
has_many :players, :through => :player_fixtures
class Player < ActiveRecord::Base
has_many :player_fixtures
has_many :fixtures, :through => :player_fixtures
class PlayerFixture < ActiveRecord::Base
belongs_to :player
belongs_to :fixture
class CreatePlayerFixtures < ActiveRecord::Migration
def change
create_table :player_fixtures do |t|
t.integer "player_id"
t.integer "fixture_id"
t.boolean "sub_paid"
t.timestamps
end
不确定放在这里的内容因为我没有针对player_fixture的特异性
我现在有这个。
<%=form_for(@fixtures, :url => {:action =>'create'}) do |f| %>
有人能指出我正确的方向!
我现在真正坚持的重大问题。
我知道这很多,但这是我正在做的一个项目,并且一直在看一个屏幕,现在尝试所有的东西3周。我需要完成这件事。
答案 0 :(得分:0)
尝试在表单中添加以下内容:
<%= check_box_tag :sub_paid %>
<%= select_tag :player_id, options_for_select(Player.all.map{|p| [p.name, p.id] %>
请注意,这些是普通的check_box_tag
和select_tag
,而不是f.check_box
或f.select
。我们不希望这些参数位于您的:fixture
参数中。现在,create
中的FixtureController
操作应该如下所示:
def create
@fixture = Fixture.new(params[:fixture])
if @fixture.save
@player = Player.find(params[:player_id])
@fixture.player_fixtures << PlayerFixture.new(:sub_paid => params[:sub_paid], :player => @player)
# other stuff, redirect, etc.
else
# error handling, render, etc.
end
end
您应该做一些检查以确保PlayerFixture
保存部分顺利进行,但您明白了。希望有助于或至少为您提供一些想法。