【问题标题】:Getting "undefined method" when trying to access my static variable in Rails尝试在 Rails 中访问我的静态变量时获取“未定义的方法”
【发布时间】:2016-07-05 21:17:31
【问题描述】:

我使用的是 Rails 4.2.3。我在课堂上定义静态变量时遇到问题。我有

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

我还需要做什么才能成功定义静态变量?

【问题讨论】:

    标签: ruby-on-rails-4 variables methods static undefined


    【解决方案1】:

    在 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"
    

    如果您真的想改用类变量,请告诉我。

    【讨论】:

      猜你喜欢
      • 2014-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-21
      • 2017-01-13
      • 1970-01-01
      • 2015-07-22
      • 2012-06-29
      相关资源
      最近更新 更多