在一個簡單的CRUD Rails應用程序我的工作,我使用所謂的Opinio顯示評論計數在Rails應用程序
模型中的評論的寶石,是commentable被稱爲帖子。在我看來,我想輸出的註釋每帖數:
<%= post.comments.size %>
這隻高產的父評論的數量。它不包括答覆。我如何獲得每個帖子的評論總數,包括回覆?這個存儲評論的寶石在哪裏回覆?
任何幫助將不勝感激!
在一個簡單的CRUD Rails應用程序我的工作,我使用所謂的Opinio顯示評論計數在Rails應用程序
模型中的評論的寶石,是commentable被稱爲帖子。在我看來,我想輸出的註釋每帖數:
<%= post.comments.size %>
這隻高產的父評論的數量。它不包括答覆。我如何獲得每個帖子的評論總數,包括回覆?這個存儲評論的寶石在哪裏回覆?
任何幫助將不勝感激!
我周圍的源代碼瀏覽和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
如果您評論類名是不是評論隨意將其更改爲任何(同爲後)。
你可以嘗試使用檢索的對個人發表評論總數:
控制器@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 %>
我已經這樣做了,你可以看一下寶石源代碼和寶石內的假人。我看過我的模式,我不知道應答的存儲位置。我似乎不能找到一種方法來計算評論和回覆。 –
我已經更新了我的原始答案。讓我知道這對你是否有幫助。 – Aluxzi
上面的答案是我正在尋找的東西,不過謝謝! –
謝謝soooooo多,你是一個天才怪,只是救了我一個頭痛的世界! :)) –
如果我有不止一個孩子的評論? – k1r8r0wn