我很难过这个。
我明白了:
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 - &gt; @selectedJob保存并测试并且没有变化,所以它不是实例变量名称(我真的不认为它是开始的,但有时候我只是愚蠢)
踢球者是当我点击后退按钮时,切换+重新加载页面,然后点击没有工作的客户 - 它工作正常。
开发人员工具控制台显示:
edit
/customers/51b78a4e97279123fd000255
GET
500
Internal Server Error
text/html
在转移+重新加载之前,然后:
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 有时无法加载?
通过退出应用程序,转移+重新加载以清除缓存,登录,转到客户页面,单击没有工作的客户,失败,后退按钮,转移+重新加载,单击,它的工作重现。
某些控制器中必须存在某种步骤,或者在登录后无法正确调用编辑页面的某些步骤(如前一页上的某些exclude语句?)但是当您在索引页面上加载时细
我疯了。
答案 0 :(得分:0)
在这种情况下,我不认为我弄清楚错误发生的原因,但我通过在job.new上的start_date和end_date值中播种来修复错误,如:
Job.new({start_date =&gt; Date.today,end_date =&gt; Date.today})因此页面会加载预先填充今天日期的字段。问题从此没有出现过,所以我称之为各种解决方案。