rails 4.2 link_to method: No route matches [POST] -
i'm trying construct link_to method: :delete call destroy method in users controller:
<%= link_to 'disable token', user_path(user), method: :delete, data: { confirm: 'are sure?'} %> which generates html looks like:
<a data-confirm="are sure?" rel="nofollow" data-method="delete" href="/users/6">disable token</a> my application.js file has:
//= require jquery //= require jquery_ujs and, in fact, know javascript loaded , doing supposed to, because generates 'are sure?` alert dialog.
however, when following link following:
no route matches [post] "/users/9" and indeed there no such route, because routes are:
users_path /users(.:format) users#index user_path delete /users/:id(.:format) users#destroy the mystery (to me) why rails doing post route in first place? you'll note url correct ("/users/9") http verb not: post.
the parameters of request getting set:
{"_method"=>"delete", "authenticity_token"=>"vcavjf1/f9mwjni4gptertdiyjkobniof0hiqvf+3bvmzuniohymm2z3w2sqsljqj11sz/tiht78aa9 } here can see _method key being set delete should be, why routing error?!?
i'm stumped.
edit: if change link_to call include remote: true rails routes proper route! so, "fix" i've changed controller use ujs, don't because, well, far can tell had before should work!
here link_to call sends proper delete request js:
<%= link_to 'disable token', u, method: :delete, data: { confirm: 'are sure?'}, remote: true %>
just try explicitly stating controller action , method (note @user.id example, may referencing differently) url_for:
<%= link_to 'disable token', url_for(action: :destroy, id: @user.id), method: :delete, data: { confirm: 'are sure?'} %>
Comments
Post a Comment