当方法明确定义时,为什么我在Rails中得到这个未定义的方法?

时间:2016-07-12 16:29:02

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

我正在使用Rails 4.2.4。我班上有以下方法......

- (void)tokenRefreshNotification:(NSNotification *)notification 
{
    [[FIRInstanceID instanceID] token]
    // Connect to FCM since connection may have failed when attempted before having a token.
    [self connectToFcm];
}

- (void)connectToFcm 
{
    [[FIRMessaging messaging] connectWithCompletion:^(NSError * _Nullable error) {
        if (error != nil) 
        {
            NSLog(@"Unable to connect to FCM. %@", error);
        }
        else 
        {
            NSLog(@"Connected to FCM.");
        }
    }];
}

但是当它到达上面一行时,我得到了错误

  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)

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

1 个答案:

答案 0 :(得分:0)

可能需要您班级的更多信息,但我可以看到 -

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

因此,您可能会收到该错误,因为object_desc_link()不作为该类实例的实例方法存在。它只能在课堂上调用。

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

我希望有所帮助!