2014-01-18 55 views
1

在一個簡單的CRUD Rails應用程序我的工作,我使用所謂的Opinio顯示評論計數在Rails應用程序

模型中的評論的寶石,是commentable被稱爲帖子。在我看來,我想輸出的註釋每帖數:

<%= post.comments.size %> 

這隻高產的父評論的數量。它不包括答覆。我如何獲得每個帖子的評論總數,包括回覆?這個存儲評論的寶石在哪裏回覆?

任何幫助將不勝感激!

回答

3

我周圍的源代碼瀏覽和apparently評論可能是其他意見的孩子,但只到一個級別:例如註釋1屬於POST1註釋2屬於註釋1將comment3不能屬於註釋2(因爲註釋2的父母已經是另一個評論)。

所以你需要查詢發出聲音是這樣的:獲取所有父評論的POST1,然後獲取所有子評論的前母公司意見,然後合併結果。喜歡的東西:

class Post 

    # This returns an Array of Comment objects. If you intend to use 
    # more than the #count method on the result, you should consider 
    # adding some sort of ordering on the two queries. 
    def all_comments 
    parent_comments = Comment.where(:commentable_id => id) 
    child_comments = Comment.where(:commentable_id => parent_comments.map(&:id)) 
    parent_comments + child_comments 
    end 

end 

post = Post.find(1) 
post.all_comments.count # The number of all (parent & child) comments of post 

如果您評論類名是不是評論隨意將其更改爲任何(同爲)。

+1

謝謝soooooo多,你是一個天才怪,只是救了我一個頭痛的世界! :)) –

+1

如果我有不止一個孩子的評論? – k1r8r0wn

0

你可以嘗試使用檢索的對個人發表評論總數:

控制器@post = Post.find(params[:id])

視圖<%= post.comments.count %>

讓所有發表的評論,你可以嘗試在控制器

@posts = Post.all

在視圖中。

評論回覆將被存儲在數據庫中。檢查應用中的\ db \ migrate \文件夾,您應該看到註釋遷移。如果您查看\ db \文件夾,您應該注意到一個development.sqlite3數據庫。使用數據庫查看器打開它可以讓您查看存儲的數據。

更新1

通過Github上回購看完後,我看到一對夫婦的事情。首先我假設你正在使用Rails 3? (否則發動機不工作)

要顯示一個特定項目opinio意見提供了一種方法:

opinio_identifier do |params| next Review.find(params[:review_id]) if params[:review_id] next Product.find(params[:product_id]) if params[:product_id] end

在此方法中,您收到PARAMS變量,你告訴引擎誰擁有來自該頁面的評論。這使您可以使用航線,如:

/產品/ 1 /評論

/產品/ 1 /評論/ 1/

TTWO自定義僅通過opinio初始化完成,他們還都是accept_replies默認爲true,strip_html_tags_on_save也默認爲true。你應該能夠在可評論的模型中找到它。

也許你可以試試這個:

<%= Opinio.model_name.comments.count %>將變爲

<%= Opinio.post.comments.count %>

+0

我已經這樣做了,你可以看一下寶石源代碼和寶石內的假人。我看過我的模式,我不知道應答的存儲位置。我似乎不能找到一種方法來計算評論和回覆。 –

+0

我已經更新了我的原始答案。讓我知道這對你是否有幫助。 – Aluxzi

+0

上面的答案是我正在尋找的東西,不過謝謝! –