0

こんにちは私は私の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])...

4

1 に答える 1

1

試す

<%= form_for [@user, @album] %> 
# other arguments can be inserted before the closing brace

その構文は、リソースルートを適切にスコープします

@albumインスタンス変数が必要な場合は、忘れずに作成してください。を使用して空のアルバムを作成できます@user.album.build

于 2012-10-03T19:41:28.547 に答える