您好我正在尝试将表单用作我的albums
控制器/模型的新/编辑视图的部分内容。但是,当我尝试编辑相册时,它会给我错误:
No route matches [PUT] "/users/22/albums"
我认为这可能与我的表单:url
有关。我提交它以创建相册时,我的表单工作正常,但在我尝试编辑时会出现错误。
我尝试在我的表单中取出url: user_albums_path
,但是当我尝试制作新相册时,它会给我一个错误。
No route matches [POST] "/albums"
有没有办法让表格适用于这两种行为?我觉得:url不能在两个动作中正确共存。
_form.html.erb
<%= form_for (@album), url: user_albums_path, :html => { :id => "uploadform", :multipart => true } do |f| %>
<div class="formholder">
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.label :description %>
<%= f.text_area :description %>
<br>
<%=f.submit %>
</div>
<% end %>
专辑控制器
class AlbumsController < ApplicationController
def index
@user = User.find(params[:user_id])
@albums = @user.albums.all
respond_to do |format|
format.html
format.json { render json: @albums }
end
end
def show
@user = User.find(params[:user_id])
@album = @user.albums.find(params[:id])
end
def update
@user = User.find(params[:user_id])
@album = @user.albums.find(params[:id])
respond_to do |format|
if @album.update_attributes(params[:album])
format.html { redirect_to user_album_path(@user, @album), notice: 'Album successfully updated' }
else
format.html { render 'edit' }
end
end
end
def edit
@user = User.find(params[:user_id])
@album = @user.albums.find(params[:id])
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 user_album_path(@user, @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 new
@user = User.find(params[:user_id])
@album = Album.new
end
def destroy
end
端
请帮忙!
更新
固定它!靠我自己!表格只需要<%= form_for([@user, @album])...
答案 0 :(得分:1)
尝试
<%= form_for [@user, @album] %>
# other arguments can be inserted before the closing brace
该语法适当地限定了资源路由
如果需要,请记住要有一个@album
实例变量。您可以使用@user.album.build