2013-07-13 76 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

相关问题