尝试在模型中包含ActionController :: UrlWriter时未初始化的内容

时间:2010-06-10 05:25:22

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

我正在使用Rails 3 beta 4并尝试在我的模型中包含ActionController :: UrlWriter,这是我能说的正确的方法,但我得到“未初始化的常量ActionController :: UrlWriter” 。

知道为什么会这样吗?它是否在轨道3中移动?

2 个答案:

答案 0 :(得分:3)

首先我同意zed。这不应该在模型中完成。您的模型应该不知道任何http网址。

我在resque工作中做同样的事情。这是我的所作所为:

include ActionDispatch::Routing::UrlFor
include ActionController::PolymorphicRoutes
include Rails.application.routes.url_helpers
default_url_options[:host] = 'example.com'

然后你可以调用任何常用的url生成器。

url_for(object)
page_url(object)

它将在主机上创建定义为default_url_options[:host]

的链接

答案 1 :(得分:1)

Can Rails Routing Helpers (i.e. mymodel_path(model)) be Used in Models?的答案非常好

或参见

http://api.rubyonrails.org/classes/ActionDispatch/Routing/UrlFor.html

http://siddharth-ravichandran.com/2010/11/26/including-url-helpers-in-models/

基本上,你可以在模型中做这样的事情:

def url
  Rails.application.routes.url_helpers.download_attachment_path(self)
end

值得考虑的是,这是否是正确的层。在我的情况下,它是文件附件,我想做attachment.url而不是写出很多帮手。