2012-07-05 81 views
1

Rails路由url輔助程序(例如item_url(1))可以在視圖中訪問。不過,我經常需要外部視圖的資源網址。例如,我需要使用url從goo.gl生成縮短的URL,並且還需要將URL傳遞給Facebook以獲取評論數量。如何獲取lib和model中的restful資源的url

我也有自定義幫助器,它包裝內置路由url助手。我也想在lib/model中使用它們。

我知道生成_url需要請求對象。所以我可以接受硬編碼的服務器域,以生成完整的網址。

如何從lib或model獲取url/call route url helper?我需要在lib類方法中訪問它。

類似的問題,我已閱讀:

Rails: How do I use helpers in a separate class in lib,該解決方案不會對LIB類的類方法的工作。

User helper functions in Lib classes,沒有明確的答案。

回答

3

只需添加這個要頂,或者你的lib /模型

include Rails.application.routes.url_helpers 
+0

感謝,但這並不類方法的工作 – lulalala 2012-07-05 09:20:59

+0

@lulalala,因爲爲了使用上,你應該使用'類級別模塊的方法extend'而不是'include'。您可以在[this](http://railstips.org/blog/archives/2009/05/15/include-vs-extend-in-ruby/)文章中找到更詳細的說明。 – 2012-07-05 10:36:28

+0

@lulalala,順便說一句,包括URL助手到你的模型中可能不是最好的想法,因爲一般來說路由不是你的模型應該知道的。但是一個「更好的」解決方案將需要重新考慮這部分應用的體系結構,並引入可處理URL生成的單獨實體。 – 2012-07-05 10:40:41