2016-07-05 5 views
0

私はRails 4.2.3を使用しています。クラスに静的変数を定義するのに問題があります。私はRailsで静的変数にアクセスしようとすると「未定義メソッド」を取得する

class MainService < Abstractmy_objectFinderService 

    # class variables 
    @@my_object_desc_link_template = "https://results.Main.com/mobile/results/my_objects?_dc=1467745366092&eventID=21476" 

… 

      event_link = MainService.my_object_data_link_template.sub(%r{intervalID=[^&]+}, "intervalID=#{interval_id}") 
              .sub(%r{eventID=[^&]+}, "eventID=#{event_id}") 
              .sub(%r{my_objectID=[^&]+}, "my_objectID=#{my_object_id}") 

を持っていますが、私は自分のコードを実行すると、私はエラーを取得する

undefined method `my_object_desc_link_template' for MainService:Class 

他に何私が成功した静的変数を定義するために何が必要ですか?

答えて

0

Rubyでは、メソッドブロックの外側で変数を初期化しません。

class MainService 
    BASE_URL = "https://results.Main.com/mobile/results/my_objects" 
    DEFAULT_PARAMS = {_dc: 1467745366092} 

    def self.event_link(interval_id, my_object_id, event_id) 
    params = {intervalID: interval_id, 
       eventID: event_id, 
       my_object_ID: my_object_id} 

    "#{BASE_URL}?#{DEFAULT_PARAMS.merge(params).to_query}" 
    end 
end 

を次にevent_linkクラスメソッドでどこからでもそれを呼び出す:あなたが本当に望んでいた場合

MainService.event_link(1, 2, 3) 
=> https://results.Main.com/mobile/results/my_objects?_dc=1467745366092&eventID=3&intervalID=1&my_object_ID=2" 

が私に教えてくださいそれは、私はあなたのコードサンプルが何をするのかを推測し、それを完全に書き直しするつもりだと述べました代わりにクラス変数を使用します。

+0

何が行われても、これが完了します。どうも –

関連する問題