【问题标题】:How to get url of a restful resource inside lib and model如何在lib和model中获取restful资源的url
【发布时间】:2012-07-05 09:06:07
【问题描述】:

Rails 路由 url 助手(例如 item_url(1))可以在视图中访问。但是,我经常需要视图之外的资源 url。例如,我需要使用 url 从 goo.gl 生成缩短的 url,我还需要将 url 传递给 Facebook 以获取评论计数。

我也有自定义助手,它包含内置路由 url 助手。我也想在 lib/model 中使用这些。

我知道生成 _url 需要 request 对象。所以我可以接受硬编码服务器域以生成完整的 url。

如何从 lib 或模型中获取 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,没有明确的答案。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3


    【解决方案1】:

    只需将此添加到顶部或您的库/模型

    include Rails.application.routes.url_helpers
    

    【讨论】:

    • @lulalala,因为要在类级别使用模块的方法,您应该使用extend 而不是include。您可以在this 文章中找到更详细的说明。
    • @lulalala,顺便说一句,在你的模型中包含 URL 助手可能不是最好的主意,因为通常路由不是你的模型应该知道的。但“更好”的解决方案需要重新考虑应用程序这一部分的架构,并引入将处理 URL 生成的单独实体。
    • 就我而言,我发现这种分离的必要性不太令人信服。由于它是一种宁静的资源,它往往是不变的,并且将是外部世界引用它的唯一方式。在这种情况下,如果模型甚至不是通过控制器创建的,你将如何处理缩短 url。
    • @KL-7 我刚试过extend Rails.application.routes.url_helpers,但它不起作用。可能是什么问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    • 2014-04-22
    • 2018-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多