2012-06-19 38 views
1

我试图通过一个URL到后台进程,以便它可以发布它在Facebook /鸣叫它。替代url_for ActionController :: Base

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

感谢

回答

4

首先url_for不弃用。当代码被重新组织时,apidock有时会解释一个方法不再像以前那样被实际删除的方法。

url_for和所有helper方法(如profile_url)都包含在实例方法中,这就是为什么您无法从您的类方法调用它们的原因。

你应该能够做到

Rails.application.routes.url_helpers.url_for(...) 

无论你身在何处。像profile_path这样的帮手也住在这里。如果你正在生成绝对的URL,你需要传入主机。通常这是从控制器正在处理的请求的主机取得的,但在这种情况下显然是不可能的。

+0

工作,谢谢! – MrJacket

+0

你在哪里可以找到像link_to这样的其他助手? – hcarreras

0

如果你在你的路由

resources :profiles 

你可以做

@my_url = profile_url(some_profile) 
+0

嗨,是的,我确实有资源:配置文件,我仍然得到'Weeklychecks:Class(NoMethodError)'的未定义方法'profile_url',就像之前我为“Weeklychecks”获取“undefined method'url_for' :类(NoMethodError)“ 我试着添加”包括ActionView :: Helpers :: UrlHelper“,仍然是相同的结果。 – MrJacket

+0

另外,这两种方法在ProfilesController上使用时都可以正常工作,它只是当我尝试在不同的控制器中使用它们时。 – MrJacket

+0

这可能看起来很愚蠢,但将您的控制器重命名为WeeklychecksController –

相关问题