好奇怪的错误。一切都很好......现在不行。
目前我有一个简单的多对一协会。
路线设置如下:
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的未定义方法`status':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):
答案 0 :(得分:5)
我有一个类似的问题 - 我有一个名为'response'的方法,Rails内部的某个东西正在调用'status',并且它同样被保护而没有堆栈跟踪可以说。
对于名为“app”和“forms”的内容,您可能会遇到类似的问题。
答案 1 :(得分:0)
@app ,您可以在尝试
中获取表单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
答案 2 :(得分:0)
首先,请检查log / development.log或浏览器。它应该可以帮助你解决错误。
接下来,什么是params值?检查log / development.log。它可能如下所示:
...
Processing FormsController#index (for 127.0.1.1 at YYYY-MM-DD hh:mm:ss) [GET]
Parameters: {...}
...
答案 3 :(得分:0)
对于内部服务器错误,您的应用程序无法正常启动。您应该检查服务器错误日志。它可以让您深入了解问题所在。如果您或团队成员(视情况而定)没有进行任何破坏应用程序的更改,那么您应该与您的主机核实。也许他们对您的环境进行了更改,导致错误。