0

在此处插入强制性的“我是 Rails 新手”评论。

TL;DR:无法 .create 或 .new 模型实例

我的基本结构是用户应该能够拥有多个笔记,这些笔记将具有由“回形针”宝石处理的附件。但是,我似乎无法实际创建注释:

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

这来自 Note Controller,错误发生在我使用 @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 用户,第一次 Stack Exchange 海报 :)

4

1 回答 1

3

我最好的猜测是您的class专栏引起了重大问题。我通常会将class其视为 Rails 中的“保留字”,并且从不将其用作列名。(当我刚刚尝试创建一个带有class列的测试模型时,我什至无法在没有stack level too deep错误的情况下加载它的表单)。

于 2013-07-15T01:59:00.473 回答