0

こんにちは、私は現在、最初の Rails プロジェクト (写真アップロード サイト) に取り組んでおり、ユーザーに属する新しいフォト アルバムを作成するフォームでエラーが発生しています。Paperclip gem を使用しようとしています。それは私にエラーを与えています:

ActiveRecord::RecordNotFound in AlbumsController#create

Couldn't find User without an ID

作成アクションのインスタンス変数と関係があると思いますが、何が問題なのかわかりません。どんなガイダンスも役に立ちます。ここに私のファイルがあります:

_form.html.erb

<%= form_for (@album), :remote => true, :html => { :id => "uploadform", :multipart => true } do |f| %>
<div>
    <%= f.label :name %>
    <%= f.text_field :name %>


    <%= f.label :description %>
    <%= f.text_area :description %>


    <%= f.fields_for :avatar do |avatar_form| %>
    <%= avatar_form.label :avatar, "Upload" %>
    <%= avatar_form.file_field :avatar, :multiple => true %>
    <% end %>


    <%=f.submit %>
</div>
<% end %>

albums_controller 作成アクション:

def create
  @users = User.all
  @user = User.find(params[:user_id])
  @album = @user.albums.build(params[:album])
  if @album.save
    flash[:success] = "Album created!"
  end 
end

構成/ルート

Pholder::Application.routes.draw do
resources :users do
  resources :albums 
end

resources :albums do
  resources :pictures
end

アルバムモデル

class Album < ActiveRecord::Base
  attr_accessible :avatar, :name, :description
  has_and_belongs_to_many :users

  has_attached_file :avatar
end

他のファイルを見る必要がある場合はお知らせください。

4

1 に答える 1

0

これは新しいアルバムなので、user_id最初に思ったようにアルバムのハッシュはありません。ユーザー ID をハッシュにマージする新しいメソッドを追加しました。

def create
  @users = User.all
  @album = Album.new(params[:album].merge!(:user_id => current_user))
  if @album.save
    flash[:success] = "Album created!"
  end 
end

attr_accessibleAlbum モデルにuser_id を入れたくない場合は、個別に割り当てることができます。

def create
  @users = User.all
  @album = Album.new(params[:album])
  @album.user_id = current_user.id
  if @album.save
    flash[:success] = "Album created!"
  end 
end
于 2012-09-29T22:12:41.483 に答える