2016-07-12 1 views
0

Я использую Rails 4.2.4. У меня есть следующие методы в моем классе ...Почему я получаю этот неопределенный метод в Rails, когда метод четко определен?

def self.object_desc_link(event_id, app_id, token, bib_no) 
    OBJECT_DESC_LINK_TEMPLATE.sub(%r{events\/([^\\])+}, "events=#{event_id}") 
          .sub(%r{appid=([^\&])+}, "appid=#{app_id}") 
          .sub(%r{token=([^\&])+}, "token=#{token}") 
          .sub(%r{search=([^\&])+}, "search=#{bib_no}") 
    end 


    def process_page_data(object_id, content) 
    … 
     object_desc_link_str = self.object_desc_link(@event_id, @app_id, @token, i) 

Но когда дело доходит до выше линии, я получаю ошибку

undefined method `object_desc_link' for #<MyService:0x007f8cb3584840> 

Правописание выглядит правильно, так почему я получаю эту ошибку?

ответ

0

Это может потребовать больше информации от вашего класса, но от того, что я могу видеть -

Похоже object_desc_link() является методом класса. Когда он вызывается в process_page_data() - который является методом экземпляра, то сам становится экземпляром, а не классом.

Таким образом, вы можете получить эту ошибку, поскольку object_desc_link() не существует как метод экземпляра для экземпляров этого класса. Он доступен только для класса.

Похоже, что вы захотите изменить метод object_desc_link() на метод экземпляра, но я не могу сказать без дополнительной информации о том, что вы пытаетесь выполнить.

Я надеюсь, что это поможет!