2016-04-18 3 views
2

私はRailsを使用して簡単なブログアプリケーションを構築しています。投稿用のコメントを投稿する機能を作成しようとしています。しかし、私はこのエラーを得続けるform_for定義された関連付けを持つRailsの最初の引数nilエラー

私は同様の問題持っていた他の記事をチェックしましたが、見つけることができませんでした

<h3> Submit a Comment </h3> 

<%= form_for [@post, @comment] do |c| %> 
//Error is here, @comment appears to be nil and I'm not sure why 
//(I've checked both cases) 

    <%= c.label :body, "Comment: " %> 
    <br /> 
    <%= c.text_area :body %> 

nilを含めるか、空にすることはできません形式で

最初の引数溶液。 、解決私のポストコントローラ

みんなありがとうでshowメソッドに@comment = Comment.newを追加するのを忘れ:すべてのヘルプは大

class CommentsController < ApplicationController 

    def create 
    @post = Post.find params[:post_id] 

    comment_params = params.require(:comment).permit(:body) 

    @comment = Comment.new comment_params 
    @comment.post = @post 
    # Why is my comment nil? 

    if @comment.save 
     redirect_to post_path(@post), notice: "Comment successful" 
    else 
     flash[:alert] = "Comment unsuccessful. Please do not enter an empty comment" 
     render "/posts/show" 
    end 

    end 

    def destroy 
    # To be implemented 
    end 

end 

EDITをいただければ幸いです!

+0

で、あなたはどのように見えるかをコントローラのでしょうか? – jdgray

+0

は私のコメントのコントローラを追加しました – JKW

答えて

3

新しいコメントを作成しています。あなたは、どちらかのはず:

A.を右クリックし、そこにあなたのコントローラ内のどこかに@comment = Comment.new

OR

B.インスタンス化それを持って

form_for [@post, Comment.new] do |c| #... 
+0

hmm、私はコントローラの中にあります。 – JKW

+0

具体的には、あなたの投稿コントローラの 'show'メソッド内にあるはずです(コメントの追加オプションが提供されていると仮定して) – Shelvacu

+0

ああ、それはまさにそれでした!ありがとうございました! – JKW

関連する問題