我被这个难住了。
我得到:
NoMethodError in Customers#edit
Showing /opt/www/vhosts/barhi/app/views/customers/edit.html.erb where line #73 raised:
undefined method `start_date' for #<Job:0x9fea5ac>
断断续续。
如果我回到 index.html.erb 并shift+reload然后单击客户,它也适用于所有其他客户!
流动:
客户/index.html.erb
我看到了一份客户名单。有些有工作,有些没有——这个错误只在客户没有任何工作时出现。
我点击一个没有工作的客户——它流入customers_controller中的这个方法:
def edit
@customer = Customer.find(params[:id])
if params[:job_id]
@selectedJob = Job.find_by_id(params[:job_id].to_s)
else
@selectedJob = Job.new
end
@jobs = Job.find_by_customer_id(params[:id].to_s)
end
放大的 NoMethodError 抱怨未定义的方法 start_date:
<%if @selectedJob.start_date %><% start_date = DateTime.parse(@selectedJob.start_date) %><% start_date = start_date.strftime('%m-%d-%Y')%><%else%><% start_date = @selectedJob.start_date%><%end%>
所以你会说“@selectedJob 没有被设置”——但确实如此,我已经在控制器中使用 logger.debug 语句进行了测试,@selectedJob.new 工作正常:
def new
@job = Job.new
end
我试过 @job -> @selectedJob 保存并测试过,没有改变,所以它不是实例变量名(我真的不认为它是开始的,但有时我只是愚蠢)
更重要的是,当我点击后退按钮时,shift+reload 页面,然后单击没有工作的客户 - 它工作正常。
开发者工具控制台显示:
edit
/customers/51b78a4e97279123fd000255
GET
500
Internal Server Error
text/html
在 shift+reload 之前,然后是:
edit
/customers/51b78a4e97279123fd000255
GET
200
OK
text/html
Other
jquery-ui.css
code.jquery.com/ui/1.10.2/themes/smoothness
GET
200
OK
text/css
edit:10
Parser
(from cache)
jquery-1.9.1.js
code.jquery.com
GET
200
OK
application/x-javascript
edit:11
Parser
(from cache)
jquery-ui.js
code.jquery.com/ui/1.10.2
GET
200
OK
application/x-javascript
edit:11
Parser
被截断是因为页面加载了很多东西 - 但最重要的问题是,为什么 edit.html.erb有时无法加载?
通过退出应用程序复制,shift+reload清除缓存,登录,转到客户页面,单击没有工作的客户,它失败,返回按钮,shift+reload,单击,它工作。
在某些控制器中必须有某种步骤,或者在登录后无法正确调用编辑页面(例如前一页上的某些排除语句?)但是当您在索引页面上时加载正常。
我要疯了。