2017-09-03 19 views
0

投稿にコメントを追加するモデルを作成しています。サーバーを実行するとエラーメッセージは表示されませんが、テキストボックスを入力した後に[送信]ボタンをクリックすると何も起こりません。コメントは作成されず、エラーメッセージも表示されません。今私は立ち往生している。私のプログラムを見て、何か間違ったコードがあれば教えてください。 おかげでたくさんのご支援投稿にRuby on railsコメント

comments_controller.rb

class CommentsController < ApplicationController 
    def create 
     @post = Post.find(params[:post_id]) 
     @comment= @post.comments.create(params[:comment].permit(:comment)) 

    if @comment.save 
     redirect_to post_path(@post) 
    else 
     render 'new' 
    end 
    end 
end 

コメント/ _form.html.erb

<%= simple_form_for [@post, @post.comments.build] do |f| %> 
    <%= f.input :comment %> 
    <%= f.submit %> 
<% end %> 

投稿/ show.html .erb

<h1><%= @post.title %></h1> 
<p><%= @post.content %></p> 

<h3> Reply to thread </h3> 
<%= render "comments/form" %> 

答えて

0

あなたは多分このような何かを追加、show.html.erbにコメントをレンダリングされていません。またそれは多分contentに変更し、Commentモデルのcommentフィールドを持っていることは非常に紛らわしいです

<h3>Comments</h3> 
<% @post.comments.each do |comment| %> 
    <p><%= comment.comment %></p> 
<% end %> 

をより意味のある何か

+0

フィードバックに感謝いたします。コードでコメントをレンダリングしても、それはまだ動作しません。 – Antoine

+0

@Antoine 'create'を' create! 'に置き換え、エラーかどうかを教えてください。 –

0

また、私はこのanswerに追加することができます一つのことがcreateメソッドが自動的に私は

class CommentsController < ApplicationController 
    def create 
    @post = Post.find(params[:post_id]) 

    if @post.comments.create(params[:comment].permit(:comment)) 
     redirect_to post_path(@post) 
    else 
     render :new 
    end 
    end 
end 

または多分ようにそれを置くために、より良いことだと思うので、もう一度.saveを実行する必要が新しいモデルを保存しませんです問題のままにしておき、.createの代わりに.buildを使用してください。

+0

ご意見ありがとうございます。 '.build'と' .save'を 'if'で使用する別のモデルに使用します。今回は間違っている可能性のある[@ post、@ post.comments.build]ではないかと思います。 – Antoine

+0

'[@post、@ post.comments.build]'はうまく見えます。間違っているとシンプルなフォームが失敗しました。それ以外の方法はコントローラ内の 'new'メソッドで' @ comment = @ post.comments.build'を定義することですが、両方の方法で動作します –

+0

最後のコメントをチェックしてビルドが成功した場合はいつでも 'rails console'をチェックインできますその投稿に作成され、params _iの書き込みキーが、通常は '' params.require(:comment).permit(:comment) 'を使うことを許可しているかどうかを確認してください。 –

関連する問題