2012年5月13日日曜日

Rails3.2.3のerror 'model_name' for NilClass:Classの対処法


scaffoldや def Newのページを既に作っていて、同時にindex.html.erb上にもnew.html.erbで出るようなフォームを表示させたいと思ったんです。
なんで<% render 'form' %>してきたものをindex.html.erbに表示させようとしたわけですが、rails sで立ち上げると、以下のようなエラーが発生しました。


Showing app/views/presences/_form.html.erb where line #1 raised: 
undefined method `model_name' for NilClass:Class
え?モデルネーム?聞いたことないけど??
いやいや定義してるでしょ?って思ったんですが、解決策はstackoverflowにもあるように、
同じ物をindex.html.erbにも定義させる必要があるってことです。
以下参考ページ↓
http://stackoverflow.com/questions/6430426/undefined-method-model-name
いや、そりゃそうでしょwwと思った方はごめんなさい。笑
てことで僕の場合は、
  def index
    @pages = Page.all(:order => "created_at DESC")
    @page = Page.new    #この行を追加することでエラーが消えました。
  end
  def new
    @page = Page.new
  end

以上です。