您好我正在处理我的第一个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
如果您需要查看其他任何文件,请与我们联系。
答案 0 :(得分: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_accessible
中使用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