ActionController :: Base中url_for的替代方法

时间:2012-06-19 00:28:03

标签: ruby-on-rails ruby

我正在尝试将网址传递给后台进程,以便它可以在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

由于

2 个答案:

答案 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)