1

フェイスブックに投稿したりツイートしたりできるように、URLをバックグラウンドプロセスに渡そうとしています。

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を追加しようとしましたが、どちらも機能しません。これに関する回避策はありますか?

Rails3.2.3を実行しています

ありがとう

4

2 に答える 2

4

まず最初にurl_for、非推奨ではありません。コードが再編成されると、apidockは、メソッドが実際に削除されたため、メソッドが以前の場所に存在しなくなったという事実を解釈することがあります。

url_forおよびprofile_urlなどのすべてのヘルパーメソッドはインスタンスメソッドとして含まれているため、クラスメソッドから呼び出すことはできません。

あなたができるはずです

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

どこにいても。のようなヘルパーprofile_pathもここに住んでいます。絶対URLを生成する場合は、trホストを渡す必要があります。通常、これはコントローラーが処理している要求のホストから取得されますが、このコンテキストでは明らかに不可能です。

于 2012-06-19T07:28:48.990 に答える
0

あなたがあなたのルートにいるなら

resources :profiles

できるよ

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