【发布时间】:2015-04-14 18:24:44
【问题描述】:
我目前正在做一个上传图片的项目。这些相册中有用户、相册和图片。我已经到了以用户身份创建相册的地步(尚未完成会话、身份验证或登录,但已完成注册)。我在提交 Rails 表单后收到一个错误
Couldn't find User without an ID
我注意到我的 new.html.erb 的 URL 没问题:
http://localhost:3000/users/13/albums/new(没问题)
但是我提交后,它给了我一个错误,页面是:
http://localhost:3000/albums/58(问题。url中没有user_id)
有谁知道为什么我的路线突然就这样改变了,以及如何解决?错误出现在我的 app/controllers/albums_controller.rb:14:in `show' @user = User.find(params[:user_id]) 行中。
new.html.erb
<%= form_for (@album), url: user_albums_path, :html => { :id => "uploadform", :multipart => true } do |f| %>
<div>
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.label :description %>
<%= f.text_area :description %>
<br>
<%=f.submit %>
</div>
<% end %>
相册控制器
def show
@user = User.find(params[:user_id])
@album = @user.albums.find(params[:id])
@photo = @album.photos.build(params[:photo])
respond_to do |format|
if @user.save
format.html { redirect_to album_photo_path(@album), notice: 'Album was successfully created.' }
format.json { render json: @album, status: :created, location: @album}
else
format.html { render action: "new" }
format.json { render json: @album.errors, status: :unprocessable_entity }
end
end
end
def update
end
def edit
end
def create
@user = User.find(params[:user_id])
@album = @user.albums.build(params[:album])
respond_to do |format|
if @user.save
format.html { redirect_to @album, notice: 'Album was successfully created.' }
format.json { render json: @album, status: :created, location: @album}
else
format.html { render action: "new" }
format.json { render json: @album.errors, status: :unprocessable_entity }
end
end
end
路线
Pholder::Application.routes.draw do
resources :users do
resources :albums
end
resources :albums do
resources :photos
end
【问题讨论】:
-
你看到这个答案了吗? stackoverflow.com/questions/1303980/…
-
是的,我已经看到了,但它对我没有任何作用。同样的错误
-
我认为问题在于我在专辑#create 上的重定向...
-
如何重定向到嵌套资源?
redirect_to user_album_path(@user)和redirect_to user_album_path(@album)给了我错误,因为我插入了整个对象而不仅仅是 id
标签: ruby-on-rails