2016-03-07 81 views
-3

因此,這裏的設置:使用添加到一個表時,得到一個零誤差「<<」視圖

控制器傳遞這兩個到視圖:

@courses = Course.all 
@assignments = Assignment.all 
<% this_assignment = Assignment.create(instructor: "test") %> 
<% @assignments << this_assignment %> 

Assignment模型具有(除其他之外)屬性instructor,這是一個字符串值。

我得到以下錯誤:

undefined method `<<' for nil:NilClass 

什麼奇怪的是我做同樣的事情當然在前面的代碼,它似乎很好地工作。我相信這是一些簡單的修復,但我似乎無法弄清楚爲什麼<<適用於@courses,但不適用於@assignments

+0

@assignments爲零。 *賦值*有一個*全部*方法嗎? – Mircea

+0

是的。該控制器寫爲:@assignments = Assignment.all – gllwrnce

回答

1

這是不必要的事:

<% @assignments << this_assignment %> 

@assignments將包括所有記錄每個頁面加載時間。如果頁面正在刷新,則變量將具有其中的所有分配。

你也不應該在視圖中創建動作。每次加載頁面時都會創建一條記錄。

刪除試圖推送到@assignments,你應該沒問題。刷新,它會在那裏。

+0

那麼這主要是一個例子。頁面本身需要創建新的分配,並通過運行某些約束將它們添加到@assignments中。我只是在做一個測試,看看我是否會在設置過程中遇到任何問題。如果我沒有解釋得那麼好,請讓我知道,但這樣做是視圖目的的一部分。 – gllwrnce

+0

你仍然不應該在視圖中做對象創建......這是一個很大的代碼嗅覺,這意味着你可能應該改變事情的方式,因此它們不會在視圖中完成。我們可以幫助你,如果你寫下你在代碼中嘗試過的東西,爲什麼你認爲你必須這樣做,以及你想要實現什麼...作爲一個新問題。 –

+0

只是堆在... Taryn東和toddmetheny是正確的雨。視圖中沒有創建對象。壞。很壞。它使我的眼睛受傷。 – jvillian

1

如果您收到此錯誤消息,則@assignments爲零。 嘗試並打印出來或使用byebug進行驗證。

這些原因浮現在腦海中:

  • 錯字控制器
  • 控制器動作不叫
  • 有更多的代碼,我們沒有看到
相關問題