为什么destroy方法重定向不正确?

时间:2017-07-22 04:16:26

标签: ruby-on-rails

我正在研究一个小型rails应用程序的销毁功能。目前,当我点击删除时,我收到以下错误:

No route matches [POST] "/note/1"

以下是相关的控制器方法:

def destroy
  if Note.find(params[:id]).destroy
    redirect_to note_index_path, notice: 'Note deleted!'
  else
    redirect_to note_path, notice: 'Note failed to updated'
  end
end

这是一个链接示例:

<p><%= link_to 'Delete Note', { action: :destroy, id: @note.id }, method: :destroy, data: { confirm: 'Are you sure?' } %></p>

以下是路线:

Prefix Verb   URI Pattern              Controller#Action
note_index GET    /note(.:format)          note#index
           POST   /note(.:format)          note#create
  new_note GET    /note/new(.:format)      note#new
 edit_note GET    /note/:id/edit(.:format) note#edit
      note GET    /note/:id(.:format)      note#show
           PATCH  /note/:id(.:format)      note#update
           PUT    /note/:id(.:format)      note#update
           DELETE /note/:id(.:format)      note#destroy
      root GET    /                        note#index

1 个答案:

答案 0 :(得分:2)

在发出action请求时,您不需要在link_to帮助器中指定DESTROY,尝试传递资源,并指定method } delete

<p><%= link_to 'Delete Note', @note, method: :delete, data: { confirm: 'Are you sure?' } %></p>

@note对象会为您提供id,也无需指定。

如果您让路线等待id /note/:id这样的参数,那么Rails会将传递的对象的id值作为link_to中的第二个参数在这种情况下。