0

これはルートの関連部分です:

resources :photos, :path => '', :only => [:show, :new, :create, :destroy, :edit] do
  ...
end

そして、私は写真を削除するためのリンクをビューに追加します:

  <%= button_to 'Delete', @photo, :method => :delete, :confirm => 'Are you sure?' %>

しかし、このビューはエラーを返します:

undefined method `photo_path' for #<#<Class:0x007faef8172060>:0x007faef87a7908>

destroyメソッドは、scaffoldによって生成されるメソッドです。何が間違っていますか?

編集: rake routes出力:

                root           /                                      photos#index
              search GET       /search(.:format)                      photos#search
      voteup_user_photo GET    /:user_id/:id/voteup(.:format)         photos#voteup
    votedown_user_photo GET    /:user_id/:id/votedown(.:format)       photos#votedown
            user_photos POST   /:user_id(.:format)                    photos#create
         new_user_photo GET    /:user_id/new(.:format)                photos#new
        edit_user_photo GET    /:user_id/:id/edit(.:format)           photos#edit
             user_photo GET    /:user_id/:id(.:format)                photos#show
                     DELETE    /:user_id/:id(.:format)                photos#destroy
4

1 に答える 1

3

ネストされたルートがあるようです(パスのニーズ:user_id:id)。パスパラメータを明示的に渡してみてください。

button_to 'Delete', { :user_id => @user.id, :id => @photo.id }, :method => :delete, :confirm => 'Are you sure?'

:actionそれが機能しない場合は、オプションハッシュにもを含める必要があるかもしれません。

于 2013-01-27T14:29:40.383 に答える