间歇性NoMethodError RoR应用程序

时间:2013-06-26 21:54:44

标签: jquery ruby-on-rails routes

我很难过这个。

我明白了:

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语句?)但是当您在索引页面上加载时细

我疯了。

1 个答案:

答案 0 :(得分:0)

在这种情况下,我不认为我弄清楚错误发生的原因,但我通过在job.new上的start_date和end_date值中播种来修复错误,如:

Job.new({start_date =&gt; Date.today,end_date =&gt; Date.today})因此页面会加载预先填充今天日期的字段。问题从此没有出现过,所以我称之为各种解决方案。