为什么一个控制器中的实例方法在一个控制器中可用而在另一个控制器中不可用?

时间:2017-02-21 08:38:47

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

内部ApplicationController我有:

class ApplicationController < ActionController::Base
  include GeoHelper

GeoHelper内我有以下实例方法:

GeoHelper.instance_methods
=> [:get_ip, :maxmind_locate, :locate_ip, :relocate]

StylesController内部我在locate_ip方法中运行show没有问题,但是当我尝试从HearingAidsController运行相同的方法时,我看到了:

undefined local variable or method `locate_ip' for HearingAidsController:Class

两个控制器都继承自ApplicationController所以给出了什么?

我尝试重启我的服务器,但仍然看到错误。

更新

在这个特定的控制器中发生了一些非常奇怪的事情。即使只是将测试方法RIGHT INSIDE放入控制器并试图调用它,我也会遇到类似的错误。

def test_method
  binding.pry
end

然后使用test_method

在show方法中运行
undefined local variable or method `test_method' for HearingAidsController:Class

1 个答案:

答案 0 :(得分:0)

将头发拉出一个神秘的问题(带有误导性和无用的错误信息)后,我终于解决了问题。

如果不发布我的所有代码,问题是locate_ip方法不在show方法之外!我从一个旧控制器粘贴了一些代码,并没有意识到我不小心用一个被复制的end关闭了show方法。要把这个Q&amp; A留给其他遇到此问题的人。 计算这些目的!!