[英]debugging a ruby on rails error
我是ruby on rails的新功能,所以我試圖調試這個錯誤,但是據我所知,我正在研究prod代碼。
錯誤:
NoMethodError in JoinController#index
undefined method `join_template' for nil:NilClass
/app/controllers/join_controller.rb:5:in `index'
好的,所以索引的第5行是:
elsif current_brand.join_template == 'tms'
顯然,current_brand為零。 控制器是AppController的子類,因此檢查一下是否可以看到current_brand是一種方法:
def current_brand
return @current_brand if defined?(@current_brand)
url_array = request.env['HTTP_HOST'].split('.').reverse
url = url_array[1] << "." << url_array[0]
@current_brand = Brand.find(:first, :conditions => ["url LIKE ?", "%" << url << "%"])
end
似乎總是返回@current_brand,但它仍然是Nil。 可能是什么問題?
可能是您的查詢未返回任何內容。 您可以使用調試器,但是僅輸出@current_brand並查看其結果是非常容易的。
logger.debug(@current_brand)
您必須檢查兩件事:
另外,像這樣傳遞URL會使您面臨潛在的SQL注入攻擊。
您需要使用搶救或if / else重寫您的定義,因此,如果確實得到nil元素,那么它將不是致命錯誤。
這是你的問題:
@current_brand = Brand.find(:first, :conditions => ["url LIKE ?", "%" << url << "%"])
@current_brand
找不到任何東西,因此請確保您找到了東西。
@current_brand = Brand.find(:first)
如果這解決了問題,那么您知道它什么都沒找到,您將需要更改代碼,如果它返回nil,則它不提供該功能,或者它找到了我建議的默認品牌。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.