为什么我在 Rails 中得到了这个未定义的方法,而方法已经明确定义了?

Why am I getting this undefined method in Rails when the method is clearly defined?

我正在使用 Rails 4.2.4。我的 class …

中有以下方法
  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>

拼写看起来是正确的,为什么我会收到这个错误?

它可能需要您 class 提供更多信息,但据我所知 --

看起来 object_desc_link() 是一个 class 方法。当它在 process_page_data() 中调用时——这是一个实例方法——然后 self 成为实例而不是 class。

所以您可能会收到该错误,因为 object_desc_link() 在 class 的实例上不作为实例方法存在。只能在 class.

上调用

看起来您可能想将 object_desc_link() 更改为实例方法,但如果没有更多关于您要完成的内容的信息,我无法判断。

希望对您有所帮助!