2016-08-17 9 views
0

私はファンタジーフットボールプロジェクト用の選手を作成しました。今私がチームを救おうとすると、コミットをロールバックするだけです。チームのためデータベースに保存中にエラーが発生しました

HTMLコードは次のようになります。また、コンソールにはエラーが表示されていない

class TeamsController < ApplicationController 
    before_filter :authenticate_user! 
    layout 'teams' 

    def index 

    @players = Player.all 


    end 

    def create 
    @players = Player.all 
    @team = Team.new(team_params) 

    if @team.save 
     redirect_to :index 
     flash[:notice] = "Team created successfully." 
    else 
     puts "error" 
     render :new 
    end 
    end 

    def new 
    @players = Player.all 
    @team = Team.new 
    end 

    def edit 
    @team = Team.find(params[:id]) 
    end 

    def update 
    @team = Team.find(params[:id]) 

    if @team.update_attibutes(team_params) 
     redirect_to :index 
     flash[:notice] = "Team updated successfully." 
    else 
     render :new 
    end 
    end 

    def show 
    @team = Team.find(params[:id]) 
    end 

    private 

    def team_params 

    params.require(:team).permit(:name, :gk1_id, :gk2_id, :def1_id, :def2_id, :def3_id, :def4_id, :def5_id, :mid1_id, :mid2_id, :mid3_id, :mid4_id, :mid5_id, :fwd1_id, :fwd2_id, :fwd3_id, :user_id) 

    end 
end 

<%= form_for(@team) do |f| %> 

         <center><h3>Choose your squad</h3></center> 
         <div class="col l5 offset-l1"> 
          <div class="row"> 
           <div class="input-field"> 
            <%= f.label :name %> 
            <%= f.text_field :name, required: true, :class => "validate", :placeholder => "Enter a name for your Team", :style => "width: 86%;" %> 
           </div> 
          </div> 
          <div class="row"> 
           <div id="playerCounter"> 
            <div class="col l6"> 
             <span id="playersAdded" >0</span>/<span id="totalPlayers" ></span> 
            </div> 
           </div> 

            <div class="hidden"> 
             <%= f.text_field :gk1_id, :id=>'contestEntry_goalkeeper1', :class=>"form-control" %> 
             <%= f.text_field :gk2_id, :id=>"contestEntry_goalkeeper2", :class=>"form-control" %> 
             <%= f.text_field :def1_id, :id=>"contestEntry_defender1", :class=>"form-control" %> 
             <%= f.text_field :def2_id, :id=>"contestEntry_defender2" , :class=>"form-control" %> 
             <%= f.text_field :def3_id, :id=>"contestEntry_defender3", :class=>"form-control" %> 
             <%= f.text_field :def4_id, :id=>"contestEntry_defender4", :class=>"form-control" %> 
             <%= f.text_field :def5_id, :id=>"contestEntry_defender5", :class=>"form-control" %> 
             <%= f.text_field :mid1_id, :id=>"contestEntry_midfielder1", :class=>"form-control" %> 
             <%= f.text_field :mid2_id, :id=>"contestEntry_midfielder2", :class=>"form-control" %> 
             <%= f.text_field :mid3_id, :id=>"contestEntry_midfielder3", :class=>"form-control" %> 
             <%= f.text_field :mid4_id, :id=>"contestEntry_midfielder4", :class=>"form-control" %> 
             <%= f.text_field :mid5_id, :id=>"contestEntry_midfielder5", :class=>"form-control" %> 
             <%= f.text_field :fwd1_id, :id=>"contestEntry_forward1", :class=>"form-control" %> 
             <%= f.text_field :fwd2_id, :id=>"contestEntry_forward2", :class=>"form-control" %> 
             <%= f.text_field :fwd3_id, :id=>"contestEntry_forward3", :class=>"form-control" %> 
            </div> 
            <div id="save-btn"> 
             <div class="col l6"> 
              <%= f.submit 'Save', :class =>"waves-effect waves-light btn orange accent-4" %> 

             </div> 
            </div> 



          <div class="col l3"> 
           <span>Remaining Salary</span> 
          </div> 
          <div class="col l3"> 
           <span id="salaryLeft" >100,000</span> 
          </div> 

          </div> 
         </div> 
        <% end %> 

私のコントローラのコード。私のコンソールログ:

Started POST "/teams" for ::1 at 2016-08-17 04:51:59 +0530 
Processing by TeamsController#create as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"UU/L+RJgtQQQFy8o/bl8xucbPKGD6qTVfHPBCvsZIXx/VtRzm5zyPr24T0kdIcAXobO/gBpWNmY9G+pmKd3G8g==", "team"=>{"name"=>"Test Team", "gk1_id"=>"1", "gk2_id"=>"2", "def1_id"=>"5", "def2_id"=>"6", "def3_id"=>"7", "def4_id"=>"8", "def5_id"=>"9", "mid1_id"=>"26", "mid2_id"=>"20", "mid3_id"=>"19", "mid4_id"=>"18", "mid5_id"=>"17", "fwd1_id"=>"25", "fwd2_id"=>"24", "fwd3_id"=>"23"}, "commit"=>"Save"} 
    User Load (0.4ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 ORDER BY `users`.`id` ASC LIMIT 1 
    (0.2ms) BEGIN 
    Player Load (0.4ms) SELECT `players`.* FROM `players` WHERE `players`.`id` = 1 LIMIT 1 
    Player Load (0.3ms) SELECT `players`.* FROM `players` WHERE `players`.`id` = 2 LIMIT 1 
    Player Load (0.3ms) SELECT `players`.* FROM `players` WHERE `players`.`id` = 5 LIMIT 1 
    Player Load (0.3ms) SELECT `players`.* FROM `players` WHERE `players`.`id` = 6 LIMIT 1 
    Player Load (0.5ms) SELECT `players`.* FROM `players` WHERE `players`.`id` = 7 LIMIT 1 
    Player Load (0.3ms) SELECT `players`.* FROM `players` WHERE `players`.`id` = 8 LIMIT 1 
    Player Load (0.3ms) SELECT `players`.* FROM `players` WHERE `players`.`id` = 9 LIMIT 1 
    Player Load (0.3ms) SELECT `players`.* FROM `players` WHERE `players`.`id` = 26 LIMIT 1 
    Player Load (0.3ms) SELECT `players`.* FROM `players` WHERE `players`.`id` = 20 LIMIT 1 
    Player Load (0.3ms) SELECT `players`.* FROM `players` WHERE `players`.`id` = 19 LIMIT 1 
    Player Load (0.4ms) SELECT `players`.* FROM `players` WHERE `players`.`id` = 18 LIMIT 1 
    Player Load (0.3ms) SELECT `players`.* FROM `players` WHERE `players`.`id` = 17 LIMIT 1 
    Player Load (0.4ms) SELECT `players`.* FROM `players` WHERE `players`.`id` = 25 LIMIT 1 
    Player Load (0.3ms) SELECT `players`.* FROM `players` WHERE `players`.`id` = 24 LIMIT 1 
    Player Load (0.3ms) SELECT `players`.* FROM `players` WHERE `players`.`id` = 23 LIMIT 1 
    (0.2ms) ROLLBACK 
error 
    Rendering teams/new.html.erb within layouts/teams 
    Rendered devise/sessions/_new.html.erb (4.0ms) 
    Rendered devise/registrations/_new.html.erb (2.1ms) 
    Rendered shared/_navbar.html.erb (9.6ms) 
    Player Load (0.6ms) SELECT `players`.* FROM `players` 
    Rendered teams/new.html.erb within layouts/teams (26.7ms) 
Completed 200 OK in 87ms (Views: 38.8ms | ActiveRecord: 6.4ms) 

私はこの問題を理解できません。すべてが動作しているように見えますが、正しい値をとっています。データベースは保存しようとして接続されていますが、保存していません。

ご意見をお寄せください。前もって感謝します。また、私はRORでかなり新しくなっているので、コードを改善する上での助けとなることも大いにありがたく思っています。編集

[OK]をした後

は、今私は、@ team.saveへの@ team.saveを変更しました!検証に失敗しました:ユーザーが存在する必要があります。

とコンソールが表示さ

Completed 422 Unprocessable Entity in 96ms (ActiveRecord: 7.2ms) 



ActiveRecord::RecordInvalid (Validation failed: User must exist): 

app/controllers/teams_controller.rb:16:in `create' 
    Rendering /usr/local/var/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.0.0/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout 
    Rendering /usr/local/var/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.0.0/lib/action_dispatch/middleware/templates/rescues/_source.html.erb 
    Rendered /usr/local/var/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.0.0/lib/action_dispatch/middleware/templates/rescues/_source.html.erb (8.6ms) 
    Rendering /usr/local/var/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.0.0/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb 
    Rendered /usr/local/var/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.0.0/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (1.9ms) 
    Rendering /usr/local/var/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.0.0/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb 
    Rendered /usr/local/var/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.0.0/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (2.9ms) 
    Rendered /usr/local/var/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.0.0/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout (117.3ms) 

マイteam.rbコード:

class Team < ApplicationRecord 
    has_many :players 
    belongs_to :user 
    belongs_to :gk1, :class_name => 'Player' 
    belongs_to :gk2, :class_name => 'Player' 
    belongs_to :def1, :class_name => 'Player' 
    belongs_to :def2, :class_name => 'Player' 
    belongs_to :def3, :class_name => 'Player' 
    belongs_to :def4, :class_name => 'Player' 
    belongs_to :def5, :class_name => 'Player' 
    belongs_to :mid1, :class_name => 'Player' 
    belongs_to :mid2, :class_name => 'Player' 
    belongs_to :mid3, :class_name => 'Player' 
    belongs_to :mid4, :class_name => 'Player' 
    belongs_to :mid5, :class_name => 'Player' 
    belongs_to :fwd1, :class_name => 'Player' 
    belongs_to :fwd2, :class_name => 'Player' 
    belongs_to :fwd3, :class_name => 'Player' 
end 
+1

'teams_controller#create'メソッドで' save'を 'save!'に変更してから再実行します。 interrobang形式のsaveはあなたのログに例外をスローして、何が起こっているかを見ることができます。 – MarsAtomic

+0

@ravi、 'team.rb'にコードを投稿できますか? –

+0

@MarsAtomic - Done – Ravi

答えて

0

私はあなたがteamuserに所属協会を持って見るので、あなたのteamオブジェクトが持つべきuser_id属性。あなたのチームのコントローラーでアクションを作成中に、あなたのteamオブジェクトを保存しようとすると、しかし、チームに関連付けられたユーザはまだありません

あなたのチームコントローラで次の操作を実行してみてください。

あなたが持っている
def create 
    @players = Player.all 
    @team = Team.new(team_params) 
    @team.user_id = current_user.id 

    if @team.save 
     redirect_to :index 
     flash[:notice] = "Team created successfully." 
    else 
     puts "error" 
     render :new 
    end 
end 
+0

Yeah thanx ...私は今それを得る – Ravi

0

userteamsの関係ですが、teamレコードはuserに関連付けずに作成しています。 createアクションを変更して、userレコードに関連付けられたチームを作成します。

def create 
    @players = Player.all 
    @team = current_user.teams.new(team_params) 

    if @team.save 
    redirect_to :index 
    flash[:notice] = "Team created successfully." 
    else 
    puts "error" 
    render :new 
    end 
end 

この方法で、teamが保存されている場合、user_idフィールドが自動的にcurrent_userのIDが移入されます。

+0

Thanxたくさん...私はまったく別のもののためにプレイヤーを使用しています...彼らは可用性を必要としません...とにかくおかず – Ravi

+0

@ravi、私は誤解しました。答えを更新しました。 –

関連する問題