首先,有问题的例外:
undefined method '_view_paths' for nil:NilClass`
相关路线:
get 'payments/index' => 'payments#index'
get 'payments/class' => 'payments#class'
get 'payments/kids' => 'payments#kids'
get 'payments/donate' => 'payments#donate'
关联的控制器:
class PaymentsController < ApplicationController
def index
end
def class
end
def kids
end
def donate
end
end
因此,每次我尝试访问其中一条路线时都会发生异常。上述路由的视图是使用scaffolding生成的简单视图,并且不使用其他rails API调用。我似乎无法找到关于这个'_view_paths'方法的任何其他信息。到目前为止,我唯一可以做出的假设是没有找到正确的视图,但所有视图都根据rails约定(app / views / payments /*)准确地存在于预期的位置。
有没有人偶然发现这个问题并找到了解决方案?
答案 0 :(得分:3)
您无法定义名为“class”的方法,因为它已经是一个引用对象class
的保留方法,例如:
Object.new.class #=> Object
从技术上讲,我认为你可以覆盖它(就像你一样),但这样做很可能会产生一些奇怪的后果,除非你知道你在做什么。
当代码尝试调用self.class._view_paths
之类的内容时,可能会发生错误。它希望打电话给PaymentsController._view_paths
。但是,您已使用返回class
的空方法重写实例方法nil
,因此nil
例外。