2013-06-26 68 views
0

我很難過這個。間歇性NoMethodError RoR應用程序

我得到:

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 +重裝,然後單擊客戶,它的工作原理和作品每隔客戶以及!

流量:

客戶/ 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抱怨未定義的方法起始日期:

<%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保存並測試了一下,沒有變化,所以它不是實例變量名(我真的不認爲它是開始的,但有時候我只是啞巴)

踢球者是當我點擊後退按鈕時,移動並重新加載頁面,然後點擊沒有工作的客戶 - 工作正常。

開發工具控制檯顯示:

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 有時無法加載?

通過註銷應用程序,轉移+重新加載以清除緩存,登錄,轉到客戶頁面,單擊客戶沒有工作,失敗,返回按鈕,Shift +重新加載,單擊,它的工作。

在某些控制器中必須有某種步驟,或者在登錄後無法正確調用編輯頁面(如前頁上的某些排除語句?),但是當您在索引頁上時加載正常。

我要瘋了。

+0

如果你可以禁用你的緩存並查看它如何在沒有所有這些移位重載的情況下運行,這將有所幫助。 –

+0

@Zach - 按照您的建議,禁用了緩存,並且系統的工作原理完全相同。登錄,點擊客戶,點擊沒有工作的客戶,錯誤,點擊返回,重新加載(不移動+重新加載但無論如何都不緩存)再次點擊,錯誤,爲了好玩而重複兩次,點擊返回,然後點擊它的作品。沒有行爲改變。 – notaceo

+0

您是否將超出默認選項的任何內容添加到您的Gemfile中?什麼版本的Rails?而且我看到你正在使用散列而不是id - 你在ActiveRecord上,還是在使用類似Mongoid的東西? –

回答

0

那麼在這種情況下,我不認爲我想通了,爲什麼錯誤是怎麼回事,但我剛好起始日期日期和結束日期值接種在job.new喜歡固定的錯誤:

工作。新({start_date => Date.today,end_date => Date.today}),以便頁面加載預填充今天日期的字段。之後從未出現問題,所以我稱之爲各種解決方案。

相關問題