0

好的奇怪的错误。一切正常……现在不行了。

目前我有一个简单的多对一关联。

路线是这样设置的:

resources :apps do
  resources :forms
end

应用程序:

has_many :forms

形式:

belongs_to :app

Forms_controller 索引操作:

def index
  @app = App.find(params[:app_id])
  @forms = @app.forms
  respond_to do |format|
    format.html # index.html.erb
    format.json { render json: @forms }
  end
end

我已经从 forms.html.erb 布局文件中提取了所有代码/html,因此它应该呈现一个空白页面。

相反,我收到了这个错误:

nil:NilClass 的未定义方法“状态”

我的应用程序中的任何地方都没有定义状态

帮助将不胜感激。

编辑:

这是我的 development.log 文件中显示的内容

Started GET "/apps/4/forms" for 127.0.0.1 at 2011-09-05 23:14:16 -0700
  Processing by FormsController#index as HTML
  Parameters: {"app_id"=>"4"}
  [1m[36mApp Load (0.1ms)[0m  [1mSELECT "apps".* FROM "apps" WHERE "apps"."id" = ? LIMIT 1[0m  [["id", "4"]]
  [1m[35m (0.1ms)[0m  SELECT COUNT(*) FROM "forms" WHERE "forms"."app_id" = 4
0
  [1m[36mForm Load (0.1ms)[0m  [1mSELECT "forms".* FROM "forms" WHERE "forms"."app_id" = 4[0m
Rendered forms/index.html.erb within layouts/forms (1.2ms)
Completed 500 Internal Server Error in 37ms

NoMethodError (undefined method `status' for nil:NilClass):
4

4 回答 4

5

我有一个类似的问题 - 我有一个名为“响应”的方法,Rails 内部的某些东西正在调用“状态”,它同样在没有堆栈跟踪可言的情况下被保释。

对于名为“app”和“forms”的东西,您可能会遇到类似的情况。

于 2012-01-23T08:28:05.633 回答
0

对于内部服务器错误,您的应用程序无法正常启动。您应该检查您的服务器错误日志。它可以让您深入了解问题所在。如果您或团队成员(视情况而定)没有做出任何破坏应用程序的更改,那么您应该与您的主机核实。也许他们对您的环境做出了导致错误的更改。

于 2011-09-06T16:56:04.197 回答
0

@app未找到,您可以在try中获取表单

def index
  @app = App.find(params[:app_id])
  @forms = @app.try(:forms)
  respond_to do |format|
    format.html # index.html.erb
    format.json { render json: @forms }
  end
end

如果您的模板处理@app,并且拥有它很重要,最好处理异常:

def index
  @app = App.find!(params[:app_id]) # raise an exception until find
  @forms = @app.forms
rescue
  flash[:error] = "App not found!"
end
于 2011-09-06T06:38:06.793 回答
0

首先,请检查 log/development.log 或浏览器。它应该可以帮助您在哪里发生错误。

接下来,什么是 params 值?检查日志/development.log。它可能如下所示:

...
Processing FormsController#index (for 127.0.1.1 at YYYY-MM-DD hh:mm:ss) [GET]
Parameters: {...}
...
于 2011-09-06T09:16:23.393 回答