2017-09-03 121 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,也許添加這樣的事情:

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

而且它是非常令人困惑有comment場爲Comment模式,也許將其更改爲content或更有意義的東西。

+0

感謝您的反饋。即使我在代碼中渲染評論,它仍然不起作用。 – Antoine

+0

@Antoine請用'create!'替換'create'並告訴我們是否有錯誤。 –

0

另外一件事我可以添加到這個answercreate方法會自動保存新的模型,以便無需再次運行.save我認爲這將是更好地把它像

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 

也許保持您的問題,並使用.build而不是.create

+0

感謝您的反饋。我在'if'中使用'.build'和'.save'作爲它工作的另一個模型。我想知道這次不是'[@post,@ post.comments.build]'這可能是錯誤的。 – Antoine

+0

'[@post,@ post.comments.build]'對我來說看起來不錯,如果錯誤,簡單的表單將失敗。其他的替代方法是在控制器的'new'方法中定義'@ comment = @ post.comments.build',但它可以雙向運行 –

+0

如果通過檢查最後一條評論,構建成功,您可以隨時登錄'rails console'在那個帖子上創建並確保你允許從參數中寫入密鑰_i通常使用'params.require(:comment).permit(:comment)'哪個IMH更紅寶石 –