2013-01-17 86 views
0

我有一個post模型,有很多comments。現在,評論的鏈接實際上是一個像/post/1?page=3#26這樣的網址。自定義什麼url_for返回模型?

我想要做的就是致電link_to "foobar", @comment並讓它生成正確的網址。我已經知道如何計算評論的頁面,因此您可以假設@comment.page_num將返回正確的整數。

我認爲這將需要以某種方式定製polymorphic_url

如果它不容易做到也許我需要一個幫助函數link_to_comment但我希望它能夠做所有的事情link_to可以,即傳遞塊和什麼不是。

+0

您可能可以通過覆蓋to_param來完成某些操作,但仍需要將post_id傳遞給link_to。這裏有一些信息https://gist.github.com/1209732 –

+0

我認爲它更多的是to_param,url完全不同。我曾想過只是做一些URL重定向。 – hadees

回答

0

所以這就是我最終做的。它非常簡單,但完全符合我的需求。我原來的範圍可能太雄心勃勃。經典案例保持簡單愚蠢

module CommentsHelper 

    def comment_page_url(comment) 
    post_url(comment.post, page: comment.page_num, anchor: comment.id) 
    end 

end 
0

我覺得像這樣的工作:

link_to "foobar", @post, href: "#{url_for(@post)}?page=#{@comment.page_num}" 

這是假設page_num回報3#26這是一個假設,我不是非常有信心,但我認爲你可以從那裏看着辦吧。

還有一點需要考慮。 page_num真的是Comment類的重要屬性嗎?在我看來,這是一個格式問題,可能屬於輔助函數而不是Model。只是想一想。

我希望它有幫助。

+0

爲什麼你不把頁面作爲參數傳遞?此外,我已經知道如何做到這一點,我希望重寫一些東西,這樣url_for(@comment)會生成url,而不必傳入其他任何東西。 – hadees

+0

我把page_num放在了模型上,因爲那是kaminari放它們的地方。我認爲,因爲分頁可以用於更多,然後在視圖中顯示。 – hadees