2017-03-09 17 views
0

私はチームがスポーツトーナメントに参加する方法をまとめています。チームに入るとき、ユーザーはすべてそのチームの選手を登録する必要があります。form_深く入れ子になったルートの複数のインスタンス

class Tournament < ApplicationRecord 
    has_many :teams 
    has_many :players, :through => :teams 

    accepts_nested_attributes_for :teams 
end 
class Team < ApplicationRecord 
    belongs_to :tournament 
    has_many :players 

    accepts_nested_attributes_for :players 
end 
class Player < ApplicationRecord 
    belongs_to :team 
    has_one :tournament, :through => :team 
end 

(routes.rbをを)私が持っているしたいことはすべてワンクリックで保存されている複数のプレイヤーの入力を備えた一の形態である

resources :tournaments do 
    resources :teams, :only => [:new, :create] do 
     resources :players, :only => [:new, :create] 
    end 
end 

次のように私の団体&ルートが設定されています。次のように私の現在のコントローラ& new.html.erbは以下のとおりです。

(players_controller.rb)

class PlayersController < ApplicationController 
    def create 
     @tournament = Tournament.find_by_id params[:tournament_id] 
     @team = Team.find_by_id params[:team_id] 
     @player = @team.players.new(player_params) 
     if @player.save 
      redirect_to root_path #just return home for now 
     else 
      redirect_to new_tournament_team_path(@tournament) 
     end  
    end 

    def new 
     @tournament = Tournament.find_by_id params[:tournament_id] 
     @team = Team.find_by_id params[:team_id] 
     @player = [] 
     3.times do 
      @player << @team.players.new 
     end 
    end 

    private 

    def player_params 
    params.require(:player).permit(:name, :tournament_id, :team_id) 
    end 
end 

(プレイヤー/ new.html.erb)

<%= form_for [@tournament, @team, @player] do |f| %> 
    <% hidden_field_tag :tournament_id, @tournament.id %> 
    <% hidden_field_tag :team_id, @team.id %> 
    <% 3.times do %> 
    <p> 
     <%= f.label :name, "Name: " %> 
     <%= f.text_field :name %> 
    </p> 
    <% end %> 
    <%= submit_tag 'Submit', :class => 'rounded_btn' %> 
</p> 
<% end %> 

私の理解から、私がすべきフォームに入力された3人のプレイヤーの名前を含む「プレーヤー」の配列を作成しようとしている可能性があります。この配列は、作成アクションによって保存されます。それが正しい方法であり、正しいパスで私を設定するためにコードを変更する必要がありますか?

ありがとうございました。

FIXED
レールにremoved validation for "belongs_to"またRyan Bate's Nested Model Form tutorial
に方法を適用して5.0

答えて

関連する問題