2012-01-12 7 views
0

私は2つのモデルを持っています:Team - 1 --- n - > Player In Words:チームには多くのプレーヤーがあります。プレーヤーはチームに所属しています。関連するオブジェクトをRails/Active Recordに保存するにはどうすればいいですか

チームデータを表示しているページで、「プレイヤーを作成」リンクを挿入したいと思います。

Playersコントローラでは、「プレーヤーを作成」リンクが配置されている場所で表示されているように、チームに関連付けられるようにPlayerを作成するにはどうすればよいですか?

私は

しなければならないのは、コントローラのプレイヤー作成 "をするチーム-IDを渡し、

2.チーム-ID、その後

を使用してチームを検索しますこのような

3.何か:@new_player = @team.players.build(...)

私はFOリソースルートの1つを使用することができますr「プレーヤーを作成」リンク?

答えて

1

nested_attributesはあなたを助けることができると思います。

腕時計this railscastについて

+0

ありがとうございました! 私はそのヒントを感謝します! –

2

チームや選手が別々のフォームを経由して追加されます:

あなたはチームの範囲に新しいプレーヤーや巣のフォームでTEAM_ID選手へのルートを含めると、URLからTEAM_IDを引き出すことができるのいずれかパラメータはparams[:team_id]です。

ネストされた選手のルート:あなたのチーム/ショービューで

resources :teams do 
     resources :players 
    end 

(チーム詳細ページ)、プレーヤーのリンクを作成します。選手のフォームで

<%= link_to 'Create Player', new_team_player_path(@team) %> 

<% form_for [@team, @player] do |f| %> 
    <!-- your form here --> 
    <%- end -%> 

をPlayersコントローラ:

def new 
     @team = Team.find params[:team_id] 
     @player = Player.new 
    end 

    def create 
     @player = Player.new params[:player] 
     @player.team_id = params[:team_id] # => if just grabbing the id from the url params 
     if @player.save 
     # flash and redirect 
     else 
     # show form again 
     end 
    end 

それ以外の場合は、新しいチームとプレーヤーの詳細を1つのフォームで指定するために、@Antoineが示すネストされた属性に関するrailscastを参照してください。 (私はあなたが探しているものは、2つのフォームの最初のオプションだと思うが、私は途方もないかもしれない)

ネストされたリソースルーティングの詳細については、Rails Routing Guideを参照してください。アプリケーションで使用できるルートを確認するには、アプリケーションのルートにあるコマンドラインからrake routesを実行します。

+0

ご協力いただきありがとうございます! この初心者の質問では、驚くほどヒントが見つかりませんでした:-) Gogglesサーバーを実行した後、このチュートリアルサイトも見つかりました [ruby-rails-3-model-1-many-association] /jonathanhui.com/ruby-rails-3-model-1-many-association) そのサイトにはさらに良いものがあります。他の初心者にも役立つでしょう... しかし、とにかく、あなたよりもずっと! –

関連する問題