2012-09-25 80 views
2

晚報所有,簡單的Rails留言中加入額外的空白評論

我坐在這裏抓我的頭超過這個最後幾個小時。

我有一個非常簡單的評論模型附加到文章模型。問題是,每篇文章評論部分末尾似乎都有一個空白的評論。如果我嘗試使用像「利用nil類」這樣的錯誤方法,並且如果我將每個評論(facebook樣式)的灰色背景的div中的註釋放在一篇文章的末尾出現一個空白框註釋。有誰知道發生了什麼事?

反正繼承人的代碼: 評論控制器

def create 
    @article = Article.find(params[:article_id]) 
    @comment = @article.comments.create(params[:comment]) 
    if @comment.save 
     flash[:success] = "Comment created" 
     redirect_to @article 
    else 
     flash[:error] = "Something went wrong" 
     redirect_to @article 
    end 
    end 

    def destroy 
    @article = Article.find(params[:article_id]) 
    @comment = @article.comments.find(params[:id]) 
    @comment.destroy 
    redirect_to @article 
    end 
end 

意見型號

attr_accessible :name, :content 

    belongs_to :article 
    validates_presence_of :article_id 
    validates_presence_of :content, length: { maximum: 300 } 

    default_scope order: "comments.created_at DESC" 

評論形式

<a href='#', id='comments-form', class="btn btn-large">Add a comment</a> 
    <div id="comment"> 
    <%= form_for([@article, @article.comments.build]) do |f| %> 

     <%= f.label :name %> 
     <%= f.text_field :name %> 

     <%= f.label :content %> 
     <%= f.text_field :content %> 

     <br> 
     <%= f.submit "Create", class: "btn btn-large" %> 
     <% end %> 
    </div> 

言論表明

<legend>Comments</legend> 

    <% comments.each do |comment| %> 
     <sabon><%= comment.name %></sabon><br> 
     <p><%= comment.content %></p> 
     <hr> 
     <% end %> 

文章的底部顯示

<%= render partial: "comments/form", locals: { article: @article } %><br><br> 
<%= render partial: "comments/show", locals: { comments: @article.comments }%> 

路線

resources :articles do 
    resources :comments 
    end 

任何幫助將是巨大的謝謝你們,提前感謝安迪,如果你需要更多的代碼就罵。

+0

您可以檢查數據庫,看看是否真的有一個空白的評論?或者鋼軌只是寫一個? – Danpe

+5

表單中的「@ article.comments.build」行構建新的評論對象。然後你在show partial中列出@ article.comments這個空白的評論。 –

+0

將其作爲答案將其作爲答案休閒和生病upvote和刻度線,歡呼聲! – dodgerogers747

回答

5

在評論表格行@article.comments.build中創建新的Comment對象。在呈現comments/show之前渲染表單,以便在@article.comments集合中存在新的空白Comment對象。

UPDATE 您可以從評論排除新創建的對象,例如:

@article.comments.reject(&:new_record?) 
+0

如何正確地彈出該對象?我遇到同樣的問題 – casraf

+0

檢查答案的更新。 –