我有下面的代碼在動作:在rails動作中更新數組?
@user = @current_user
@user.votes[1430]='up'
@user.update_attributes(params[:user])
投票是一個字符串類型,沒有默認值 - 我只是想此操作時設置它的第一次。
不幸的是我得到這個錯誤: NoMethodError
你有一個零對象時,你沒想到吧! 評估nil.votes時發生的錯誤
任何想法我做錯了什麼?
我有下面的代碼在動作:在rails動作中更新數組?
@user = @current_user
@user.votes[1430]='up'
@user.update_attributes(params[:user])
投票是一個字符串類型,沒有默認值 - 我只是想此操作時設置它的第一次。
不幸的是我得到這個錯誤: NoMethodError
你有一個零對象時,你沒想到吧! 評估nil.votes時發生的錯誤
任何想法我做錯了什麼?
錯誤的原因似乎是@user是無參考。
您可以通過日誌和在控制檯窗口,檢查證實了這一點:
logger.info「用戶是零,」如果@ user.nil?
您正在將@user指定爲@current_user的值。我以前見過這種模式,通常current_user是一個函數,在其他地方聲明,而不是實例變量。如果您使用的是這種模式,那麼該行應該像@user = current_user那樣。
(此外,如果票是一個字符串,你的第二個行似乎指的是字符串,這可能不是你想要什麼或者指數1430。)
我分裂掉的意見,因爲我不想劫持邪惡鱒魚的反應,我們似乎正在偏離最初談到的內容。
Unfortunately I get this error: NoMethodError
You have a nil object when you didn't expect it! The error occurred while evaluating nil.votes
爲此,請查看authlogic example應用程序。我的猜測是,您沒有設置適當的before_filter
,並且不需要用戶在該操作中登錄。
the 1430 is actually two seperate IDs
我不完全按照這個。這是兩個ID的串聯?什麼是ID?說實話,我從來沒有使用數組作爲數據庫中的字段類型,所以我不知道它的優點是什麼,但每當我認爲數組是一個好主意時,我通常會問不管它是不是更好,只是讓它成爲一個單獨的模型,因此,表。
聽起來像你描述的情況可能有Question
哪一個User
可以投票。如果是這樣的話,我可能會有一個單獨的Voteable
模型,它可以讓用戶加入他們可以投票的問題。
也許如果你提供一些更多的洞察這方面的事情,我可以提出一個更好的建議。乾杯。
嗨邪惡的鱒魚, 感謝您的答案!索引1430不投票數組?因爲如果是這樣,那就是我想要做的。 從@user = current_user得到類似的錯誤,我使用authlogic如果這有所作用 – Elliot 2009-08-30 18:31:25
是否要求用戶在此操作之前登錄?而且,投票的索引(如果它是一個字符串)不會使其成爲數組,它將查找字符串位置1430處的字符。這裏有一些關於http://www.ruby-doc.org/core/classes/String的更多信息。html#M000771 – theIV 2009-08-30 18:44:28
啊,那我該如何讓它成爲一個數組?它應該是鍵入文本? – Elliot 2009-08-30 19:03:55