2014-06-21 105 views
0

我想用Ruby on Rails編寫博客,我到目前爲止編寫我的評論控制器,我有點生鏽的Ruby,所以這可能實際上是問題(使用舊的方式編碼?)。現在CommentsController無法發表評論

def create 
    @post = Post.find(params[:post_id]) 
    @comment = @post.comments.build(params.permit[:comment]) 
    @comment.save 

    redirect_to(:back) 
end 

,它的實際工作很好,但它根本不會發布評論,它只是說「某某發佈分鐘前」,但在網頁上沒有顯示實際郵報寫的是,後發它到了網站。如果這是數據庫問題或代碼失敗(即使它的代碼失敗),我現在不會這麼做!)!

如果你們需要更多關於我的代碼的信息,只需問:)!

+0

你的意思是你在html頁面看到了一些變化,但是他們沒有包含你想要的所有信息?同時提供你的「視圖」代碼和「新」動作代碼。 – twonegatives

+0

對於這個問題感到抱歉:您的意思是通過查看代碼,HMTL網站的代碼以及我在哪裏可以獲得新的操作代碼?對不起,我是鐵桿新手! – massli

+0

看起來你的代碼工作正常,但你的模板不會輸出你的評論。你可以通過運行'rails console'來測試,找到你的帖子,看看它有什麼評論。例如:'p = Post.find(3)'然後'p.comments' –

回答

0

您的permit調用一個錯字,應該讀

params.permit(comment: :text) 

這是假設您的評論模型存儲在body列,實際的評論,你params是這樣的:

{ post_id: 42, comment: { text: "..." } } 

此外,你應該使用ActiveRecord's validations並捕獲這樣的無效評論:

def create 
    # ... 
    if @comment.save 
    redirect_to @post 
    else 
    render :new 
    end 
end 
+0

謝謝,很有幫助,但我的代碼實際上工作,我改變了它給你。但問題(如上面列出的Alex)實際上是問題所在。數據庫正在註冊註釋,但是將文本置零,所以我實際上不知道現在要在哪裏更改:E! – massli

+0

...這是不同程度的工作。它可以註冊創建評論,但它會忽略文本,因爲您不允許評論的文本。我已經提供了關於如何做到這一點的答案。 – DMKE