我正在尝试将网址传递给后台进程,以便它可以在facebook / tweet上发布。
class Weeklychecks < ActionController::Base
.
.
.
def self.verifications
.
.
.
@my_url = url_for(:action => 'show', :controller => 'profiles', :only_path => false)
.
end
end
但似乎不推荐使用此代码:http://apidock.com/rails/ActionController/Base/url_for
当基类是ApplicationController时我使用过这个方法,但我需要在这个中使用ActionController :: Base。我试过补充一下 包括ActionView :: Helpers :: UrlHelper 但它也不起作用。有解决方法吗?
我正在运行Rails 3.2.3
由于
答案 0 :(得分:4)
首先关闭url_for
不会弃用。当代码被重新组织时,apidock有时会解释这样一个事实,即一个方法不再像过去那样被删除了。
url_for和所有辅助方法(如profile_url)都作为实例方法包含在内,这就是为什么你不能从类方法中调用它们的原因。
你应该能够做到
Rails.application.routes.url_helpers.url_for(...)
无论你身在何处。像profile_path
这样的助手也住在这里。如果您正在生成绝对URL,则需要传入tr主机。通常这是从控制器正在处理的请求的主机获取的,但在这种情况下显然是不可能的。
答案 1 :(得分:0)
如果你的路线
resources :profiles
你可以做到
@my_url = profile_url(some_profile)