我正在研究一个小型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
答案 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
中的第二个参数在这种情况下。