0

我被这个难住了。

我得到:

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,单击,它工作。

在某些控制器中必须有某种步骤,或者在登录后无法正确调用编辑页面(例如前一页上的某些排除语句?)但是当您在索引页面上时加载正常。

我要疯了。

4

1 回答 1

0

那么在这种情况下,我认为我不知道为什么会发生错误,但是我通过在 job.new 上的 start_date 和 end_date 值中播种来修复错误,例如:

Job.new({start_date => Date.today, end_date => Date.today}) 因此页面加载时预先填充了今天的日期。在那之后问题从未出现过,所以我称之为某种解决方案。

于 2013-06-27T19:59:41.970 回答