为什么我在 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() 更改为实例方法,但如果没有更多关于您要完成的内容的信息,我无法判断。
希望对您有所帮助!
我正在使用 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() 更改为实例方法,但如果没有更多关于您要完成的内容的信息,我无法判断。
希望对您有所帮助!