是什么导致NoMethodError'_view_paths'异常?

时间:2011-09-25 06:26:55

标签: ruby-on-rails ruby routing

首先,有问题的例外:

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 /*)准确地存在于预期的位置。

有没有人偶然发现这个问题并找到了解决方案?

1 个答案:

答案 0 :(得分:3)

您无法定义名为“class”的方法,因为它已经是一个引用对象class的保留方法,例如:

Object.new.class #=> Object

从技术上讲,我认为你可以覆盖它(就像你一样),但这样做很可能会产生一些奇怪的后果,除非你知道你在做什么。

当代码尝试调用self.class._view_paths之类的内容时,可能会发生错误。它希望打电话给PaymentsController._view_paths。但是,您已使用返回class的空方法重写实例方法nil,因此nil例外。