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

Ruby on rails 尝试在模型中包含ActionController::UrlWriter时未初始化的内容,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我正在使用Rails 3 beta 4,并试图在我的模型中包含ActionController::UrlWriter,这是我所知的正确方法,但我得到了“未初始化的常量ActionController::UrlWriter” 知道为什么吗?它在rails 3中移动了吗?首先,我同意zed的观点。这不应该在模型中进行。您的模型应该不知道任何http url 我在一份新的工作中也这样做。我是这样做的: include ActionDispatch::Routing::UrlFor include Ac

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


知道为什么吗?它在rails 3中移动了吗?

首先,我同意zed的观点。这不应该在模型中进行。您的模型应该不知道任何http url

我在一份新的工作中也这样做。我是这样做的:

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\u url\u选项[:host]

答案非常好

或者看

基本上,您可以在模型中执行以下操作:

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

不过,值得考虑的是,这一层是否正确。在我的例子中,它是用于文件附件的,我想使用attachment.url,而不是编写很多帮助程序。

在模型中包含控制器的部件通常是错误的。我需要能够在与模型相关的、与控制器无关的操作中生成命名的路由。它还应该去哪里?Lib?对不起,我没听懂。那么midas06应该把代码放在哪里呢?为什么您仍然包括ActionController::多态控件?不在ActionController中吗?