2011-12-25 15 views
0

エラーが発生しました:NilClassの未定義メソッド` model_name':クラス下記の新しい投稿ビューを呼び出すとき。私はこれについて多くの研究をしましたが、インスタンス変数@postsがコントローラで定義されていないときにほとんど発生するようです。また、routesファイルに "resources:posts"を含めました。ビューを呼び出すときに未定義のメソッド `model_name '

コントローラでこれを宣言しました。 Current_userは、現在ログインしているユーザーの@userです。 user_idが現在のユーザーで埋められている新しいレコードを作成しようとしています。

class PostsController < ApplicationController 

    def create 
    @post = current_user.posts.build(params[:post]) 
    if @post.save 
     flash[:success] = "Post created!" 
     redirect_to root_path 
    else 
     render 'pages/home' 
    end 
    end 
end 

new.html.erb:

<h1>Create Post</h1> 

    <%=form_for(@post) do |f|%> 
     <div class="field"> 
     <%=f.label :title %><br /> 
     <%=f.text_field :title%> 
     </div> 
     <div class="field"> 
     <%=f.label :body %><br /> 
     <%=f.text_field :body%> 
     </div> 
     <div class="field"> 
     <%=f.label :quantity %><br /> 
     <%=f.text_field :quantity%> 
     </div> 
     <div class ="actions"> 
     <%= f.submit "Post" %> 
     </div> 
    <%end%> 

答えて

3

new.html.erbで@postを使用するには、コントローラのnew方法でそれを設定する必要があります。通常は次のようになります。

+0

"def create"メソッドを "def new"に更新しました。画面はUrlバーの「新しい」ルートで点滅し、フォームに何も入力させずにすぐにリダイレクトされます。ただし、投稿テーブルの新しい行が作成されます。 – kyle

+0

**もちろん!**あなたはどう思いましたか?それを 'create'に名前を変更し、私の投稿と同様に' new'を追加してください。 –

+0

私はこのRailsの本をお勧めします:http://pragprog.com/book/rails4/agile-web-development-with-rails –

関連する問題