我正在爲Rails中的日記開發一個網站,並且在我的一個網頁上有一個按降序發佈的每一個問題的列表。我還有一個選擇框供用戶按年篩選問題,因爲他們沒有名字,但希望如果問題中的文章沒有上傳到網站,它將幫助他們更快地找到他們正在尋找的內容分別。Heroku上的NoMethodError,但不是本地的
爲了創建過濾器框的選項,我提出了以下函數來返回問題的所有獨特年份的列表(問題的日期字段是問題的發佈日期,以防萬一需要上傳網站之前的舊問題)。
Issue.select("date").order('date desc').map{ |i| i.date.year }.uniq
此功能出色我自己的機器上,但是當我在Heroku(免費帳戶)部署它,當我檢查日誌提供了以下錯誤消息。
2017-08-15T15:19:42.521061+00:00 app[web.1]: Started GET "/issues" for 83.136.45.169 at 2017-08-15 15:19:42 +0000
2017-08-15T15:19:42.522804+00:00 app[web.1]: Processing by IssuesController#index as HTML
2017-08-15T15:19:42.524822+00:00 app[web.1]: Issue Load (0.9ms) SELECT "issues"."date" FROM "issues" ORDER BY date desc
2017-08-15T15:19:42.525378+00:00 app[web.1]: Completed 500 Internal Server Error in 2ms (ActiveRecord: 0.9ms)
2017-08-15T15:19:42.525925+00:00 app[web.1]:
2017-08-15T15:19:42.525926+00:00 app[web.1]: NoMethodError (undefined method `year' for nil:NilClass):
2017-08-15T15:19:42.525927+00:00 app[web.1]: app/controllers/issues_controller.rb:12:in `block in index'
2017-08-15T15:19:42.525927+00:00 app[web.1]: app/controllers/issues_controller.rb:12:in `index'
自從我上次推送以來,我沒有對數據庫做任何更改。我不知道如何進一步調試這種情況。
你能解釋一下'compact'的功能嗎? –
@BrianMcNestry我編輯了我的答案 –
事實證明'where.not'被添加到Rails 4.0中,因此最終能夠使用第一個解決方案。 &方法不起作用 –