为什么 Rails 会使用“link_to”不适用于删除操作?

发布于 2024-10-07 20:03:26 字数 802 浏览 2 评论 0原文

index.html.erb 中,我显示所有产品,并且在每个产品旁边有 EditDelete 操作:

<% @products.each do |product| %>
  ...
  <%= link_to("Edit", edit_product_path(product.id), :class => 'action') %>
  <%= link_to("Delete", product, :method => :delete, :class => 'action') %>
  ...
<% end %>

Edit< /code> 链接工作正常。但是,Delete 链接不起作用。我收到以下错误:

Unknown action
The action 'show' could not be found for ProductsController

我猜这是因为请求方法是 GET 而不是 DELETE。但是,我不知道如果我显式设置 :method => 为什么会发生这种情况:删除

routes.rb 非常简单:

root :to => "products#index"
resources :products

我启用了 Javascript。

请建议。

In index.html.erb I display all products, and next to each product I have Edit and Delete actions:

<% @products.each do |product| %>
  ...
  <%= link_to("Edit", edit_product_path(product.id), :class => 'action') %>
  <%= link_to("Delete", product, :method => :delete, :class => 'action') %>
  ...
<% end %>

The Edit link works ok. However, the Delete link does not work. I get the following error:

Unknown action
The action 'show' could not be found for ProductsController

I guess it is because the request method is GET rather than DELETE. But, I don't know why this happens if I set explicitly :method => :delete.

routes.rb is pretty simple:

root :to => "products#index"
resources :products

I have Javascript enabled.

Please suggest.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

早茶月光 2024-10-14 20:03:27

不要忘记在您的 application.js 文件中包含 jquery_ujs

//
//= require jquery
//= require jquery_ujs
// ...

Dont forget to include jquery_ujs in your application.js file:

//
//= require jquery
//= require jquery_ujs
// ...
仅此而已 2024-10-14 20:03:27

在删除链接中,它需要是 product_path(product) 而不是 product

It needs to be product_path(product) instead of product in your delete link.

池予 2024-10-14 20:03:27

我遇到了同样的问题 - 实际上我已将旧的“删除”操作更改为“销毁” - 但忘记了如果您使用 SSL..(例如 ssl_required :destroy)

I had same problem - actually I had changed my old 'delete' action to 'destroy' - but forgot If your using SSL.. (e.g ssl_required :destroy)

一曲琵琶半遮面シ 2024-10-14 20:03:26

您是否在 javascript_include_tag 中指定了 rails.js?这是不引人注目的 DELETE 方法正常工作所必需的。如果您使用 jQuery,那么也有一个解决方案。

Do you have rails.js specified in a javascript_include_tag? This is required for the unobtrusive DELETE method to work. If you're using jQuery then there's a solution for that too.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文