2011-09-14 15 views
1

StackOverflowを助けてください、私の唯一の希望です。Rails 3.1スカイフォールド未定義メソッド `model_name 'for nil:NilClass

私は次のエラーが発生しています。

未定義のメソッド `MODEL_NAME:ライン#1が発生/home/paul/rails_projects/recruits/app/views/players/_form.html.hamlを表示

プレーヤーでNoMethodError#新しい

「nilのために:NilClass

抽出されたソース(ライン#周り1):

1:=のform_for @player DO | | F

2:-if @ player.errors.any?

3:#error_explanation

4%のH2 = "#{(@ player.errors.count、複数形 "エラー")が}保存されることから、このプレーヤを禁止:" テンプレートインクルージョンの

トレース:app/views/players/new.html.haml

Rails.root:/ home/paul/rails_projects/recruits アプリケーショントレース|フレームワークトレース|完全なトレース

アプリ/ビュー/プレーヤー/ _form.html.haml:1:_app_views_players__form_html_haml___279577567_106102840' app/views/players/new.html.haml:3:in _app_views_players_new_html_haml__860668925_106567710' で:29: アプリ/コントローラ/ players_controller.rb `新に」

私が使ってこれを作成しました足場のジェネレータは、別の領域で私のためにうまくいきましたが、明らかにここにはありませんでした。

ここに関連するファイルがあります(scaffoldコマンドで生成されたファイルに対しては、attr_accessableをプレーヤーモデルに追加するだけです)。

モデル/ player.rb

class Player < ActiveRecord::Base 

    attr_accessible :first_name, :last_name, :scout_height, :scout_weight, 
    :scout_profile_url, :scout_star_rating, :scout_overall_ranking, 
    :scout_position_ranking, :scout_position, :espn_height, :espn_weight, 
    :espn_profile_url, :espn_star_rating, :espn_overall_ranking, 
    :espn_position_ranking, :espn_position, :rivals_height, :rivals_weight, 
    :rivals_profile_url, :rivals_star_rating, :rivals_overall_ranking, 
    :rivals_position_ranking, :rivals_position, :maxprep_height, :maxprep_weight, 
    :maxprep_profile_url, :maxprep_star_rating, :maxprep_overall_ranking, 
    :maxprep_position_ranking, :maxprep_position, :class, :school_commit, :loi_signed 

end 

コントローラ/ players_controller.rb

class PlayersController < ApplicationController 
    # GET /players 
    # GET /players.json 
    def index 
    @players = Player.all 

    respond_to do |format| 
     format.html # index.html.erb 
     format.json { render json: @players } 
    end 
    end 

    # GET /players/1 
    # GET /players/1.json 
    def show 
    @player = Player.find(params[:id]) 

    respond_to do |format| 
     format.html # show.html.erb 
     format.json { render json: @player } 
    end 
    end 

    # GET /players/new 
    # GET /players/new.json 
    def new 
    @player = Player.new 

    respond_to do |format| 
     format.html # new.html.erb 
     format.json { render json: @player } 
    end 
    end 

    # GET /players/1/edit 
    def edit 
    @player = Player.find(params[:id]) 
    end 

    # POST /players 
    # POST /players.json 
    def create 
    @player = Player.new(params[:player]) 

    respond_to do |format| 
     if @player.save 
     format.html { redirect_to @player, notice: 'Player was successfully created.' } 
     format.json { render json: @player, status: :created, location: @player } 
     else 
     format.html { render action: "new" } 
     format.json { render json: @player.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    # PUT /players/1 
    # PUT /players/1.json 
    def update 
    @player = Player.find(params[:id]) 

    respond_to do |format| 
     if @player.update_attributes(params[:player]) 
     format.html { redirect_to @player, notice: 'Player was successfully updated.' } 
     format.json { head :ok } 
     else 
     format.html { render action: "edit" } 
     format.json { render json: @player.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    # DELETE /players/1 
    # DELETE /players/1.json 
    def destroy 
    @player = Player.find(params[:id]) 
    @player.destroy 

    respond_to do |format| 
     format.html { redirect_to players_url } 
     format.json { head :ok } 
    end 
    end 
end 

ビュー/プレーヤー/ new.html.haml

%h1 New player 

= render 'form' 

= link_to 'Back', players_path 

ビュー/プレーヤー/ _form。 html.haml

= form_for @player do |f| 
    -if @player.errors.any? 
    #error_explanation 
     %h2= "#{pluralize(@player.errors.count, "error")} prohibited this player from being saved:" 
     %ul 
     - @player.errors.full_messages.each do |msg| 
      %li= msg 

    .field 
    = f.label :first_name 
    = f.text_field :first_name 
    .field 
    = f.label :last_name 
    = f.text_field :last_name 
    .field 
    = f.label :scout_height 
    = f.number_field :scout_height 
    .field 
    = f.label :scout_weight 
    = f.number_field :scout_weight 
    .field 
    = f.label :scout_profile_url 
    = f.text_field :scout_profile_url 
    .field 
    = f.label :scout_star_rating 
    = f.number_field :scout_star_rating 
    .field 
    = f.label :scout_overall_ranking 
    = f.number_field :scout_overall_ranking 
    .field 
    = f.label :scout_position_ranking 
    = f.number_field :scout_position_ranking 
    .field 
    = f.label :scout_position 
    = f.text_field :scout_position 
    .field 
    = f.label :espn_height 
    = f.number_field :espn_height 
    .field 
    = f.label :espn_weight 
    = f.number_field :espn_weight 
    .field 
    = f.label :espn_profile_url 
    = f.text_field :espn_profile_url 
    .field 
    = f.label :espn_star_rating 
    = f.number_field :espn_star_rating 
    .field 
    = f.label :espn_overall_ranking 
    = f.number_field :espn_overall_ranking 
    .field 
    = f.label :espn_position_ranking 
    = f.number_field :espn_position_ranking 
    .field 
    = f.label :espn_position 
    = f.text_field :espn_position 
    .field 
    = f.label :rivals_height 
    = f.number_field :rivals_height 
    .field 
    = f.label :rivals_weight 
    = f.number_field :rivals_weight 
    .field 
    = f.label :rivals_profile_url 
    = f.text_field :rivals_profile_url 
    .field 
    = f.label :rivals_star_rating 
    = f.number_field :rivals_star_rating 
    .field 
    = f.label :rivals_overall_ranking 
    = f.number_field :rivals_overall_ranking 
    .field 
    = f.label :rivals_position_ranking 
    = f.number_field :rivals_position_ranking 
    .field 
    = f.label :rivals_position 
    = f.text_field :rivals_position 
    .field 
    = f.label :maxprep_height 
    = f.number_field :maxprep_height 
    .field 
    = f.label :maxprep_weight 
    = f.number_field :maxprep_weight 
    .field 
    = f.label :maxprep_profile_url 
    = f.text_field :maxprep_profile_url 
    .field 
    = f.label :maxprep_star_rating 
    = f.number_field :maxprep_star_rating 
    .field 
    = f.label :maxprep_overall_ranking 
    = f.number_field :maxprep_overall_ranking 
    .field 
    = f.label :maxprep_position_ranking 
    = f.number_field :maxprep_position_ranking 
    .field 
    = f.label :maxprep_position 
    = f.text_field :maxprep_position 
    .field 
    = f.label :class 
    = f.number_field :class 
    .field 
    = f.label :school_commit 
    = f.text_field :school_commit 
    .field 
    = f.label :loi_signed 
    = f.check_box :loi_signed 
    .actions 
    = f.submit 'Save' 

routes.rbを

Recruits::Application.routes.draw do 

    resources :schools 
    resources :players 

    #get \"users\/show\" 

    root :to => "home#index" 

    devise_for :users 
    resources :users, :only => :show 
end 

答えて

3

私はここに推測しているが、あなたは「クラス」と呼ばれる属性は、あなたがそれを変更する必要があり、あなたのプレイヤーモデルを与えたので、私はそれだと信じて:player_classか何か。 classは予約語です。また、_form.html.erbおよびindex.html.erbファイルとshow.html.erbファイルを更新して、この新しい名前を使用する必要があります。

+0

Davidさん、ありがとうございました。Playerモデルの名前を変更しました。私はこれを回避するためにいくつかのことを行っていましたが、これを元に戻すことはうまくいくと思われますので、私はあなたの提案と私の他の回避策によるものではないと確信しています。 –

関連する問題