在rails中使用link_to和delete动作

时间:2014-09-04 07:20:14

标签: ruby-on-rails

在我的网格中,

link_to('Edit', edit_manage_user_path(user.id))

工作正常但是,

link_to('Delete', delete_manage_user_path(user.id))

为#<#:0xc05439c>“提供错误”未定义方法`delete_manage_user_path'“鉴于我的控制器中有删除操作..

知道为什么会出现这个错误?

5 个答案:

答案 0 :(得分:2)

 link_to 'Delete', manage_user_path(user), method: :delete

这将调用您的删除操作。如果您使用的是restful routing,则没有这样的路径delete_manage_user_path(user)

答案 1 :(得分:2)

如果您使用resurces路由,则destroy操作的路径与show相同,但您应使用HTTP DELETE方法:

link_to 'Delete', [:manage, user], method: :delete

答案 2 :(得分:1)

知道是成功的一半。您需要确定删除资源的正确途径。您可以通过运行以下命令来执行此操作:

bundle exec rake routes

这是我自己的一个Rails应用程序输出的示例: enter image description here

我在你应该寻找的东西上加了一个箭头。

获得路线后,您需要在用户点击链接时指定发送HTTP请求的方式。您可以通过在嵌套的自定义method属性中提供data密钥来执行此操作。这是一个例子:

<%= link_to "Delete", user_path(user), data: { method: :delete } %>

其他资源:

答案 3 :(得分:0)

删除调用的格式为:

<%= link_to 'Delete', manage_user_path(user.id), :method => :delete %>

使用rake routes了解可用的路由,包括生成的路由助手,以及处理请求的控制器/操作。

答案 4 :(得分:0)

我总是更喜欢按钮方式:

 = form_with url: destroy_user_session_path, method: :delete do |form|
   = form.submit "Sign out"