2013-07-13 80 views
0

在此插入強制性的「我是Rails新手」評論。Rails 4.0未定義方法`[]'爲零:NilClass

TL; DR:不能.create或模型

我的基本結構是用戶應該能夠有多個註釋,這將有由「回形針」寶石處理附件。新的實例。不過,我似乎無法能夠真正創建註釋:

undefined method `[]' for nil:NilClass 

def create 
    @user = User.find(params[:user_id]) 
    @note = @user.notes.create(params[:note].permit(:topic, :class, :content)) 

    redirect_to user_path(@user) 
end 

這是從注控制器來了,在我使用@ user.notes.create行發生錯誤。我將問題歸結爲音符在開始時是空的,由於某些原因,「創建」調用在空的音符數組上失敗。有趣的是,Note.new也失敗了,如果我只是嘗試實例化一個空的音符來處理相同的錯誤。

模型以供參考:

class Note < ActiveRecord::Base 
    belongs_to :user 

    has_attached_file :content, 
    :storage => 's3', 
    :bucket => ENV['AWS_BUCKET'], 
    :path => "uploads/:attachment/:id/:styles.:extension", 
    :styles => { 
     :medium => "300x300>", 
     :thumb => "100x100>" }, 
    :s3_credentials => { 
     :access_key_id => ENV['AWS_ACCESS_KEY_ID'], 
     :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'] }, 
    :s3_permissions => 'public-read' 
end 

class User < ActiveRecord::Base 
    has_many :notes 

    validates_presence_of :username 
    validates_presence_of :email 
    validates_presence_of :school 
    validates_format_of :email, :with => /\A[-a-z0-9_+\.]+\@([-a-z0-9]+\.)+[a-z0-9] {2,4}\z/i 

end 

讓我知道是否需要任何更多的信息,第一次Rails的用戶,第一次堆棧交易所海報:)

回答

3

我最好的猜測是,你class列造成重大問題。我通常會將class視爲Rails中的「保留字」,並且從不將其用於列名。 (當我剛剛嘗試創建一個帶有class列的測試模型時,我甚至無法獲取表單,無法獲取stack level too deep錯誤)。

+0

你明白了,謝謝! – Longhorns747

相關問題