0

ここに必須の「私は Rails 初心者です」というコメントを挿入してください。

TL;DR: モデルの .create または .new インスタンスを作成できません

私の基本的な構造は、ユーザーが「ペーパークリップ」gem によって処理される添付ファイルを持つ複数のメモを持つことができるようになっているということです。ただし、実際にメモを作成することはできないようです:

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 に答える