1

我正在尝试将 url 传递给后台进程,以便它可以在 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。我尝试添加 include ActionView::Helpers::UrlHelper 但它也不起作用。有解决方法吗?

我正在运行 Rails 3.2.3

谢谢

4

2 回答 2

4

首先不url_for被弃用。当代码被重新组织时,apidock 有时会解释一个方法不再是它曾经的位置这一事实,因为该方法实际上已被删除。

url_for 和 profile_url 等所有辅助方法都作为实例方法包含在内,这就是为什么您不能从类方法中调用它们的原因。

你应该能够做到

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

无论你在哪里。喜欢的帮手profile_path也住在这里。如果要生成绝对 url,则需要传入 tr host。通常这是从控制器正在处理的请求的主机中获取的,但这显然在这种情况下是不可能的。

于 2012-06-19T07:28:48.990 回答
0

如果您的路线中有

resources :profiles

你可以做

@my_url = profile_url(some_profile)
于 2012-06-19T01:11:15.693 回答