0

我们正在向脚手架应用程序的 WidgetsController 添加一个新方法“delete_stuff”。

在路线中,我们添加了 match 'widget/delete_stuff/:id' => 'widgets#delete_stuff'

我可以手动创建 html (GET) 链接,例如

<a href="/widget/delete_stuff/<% widget.id %>">My Custom Delete Stuff</a>

但这在很多层面上都很糟糕(使用 GET 而不是 DELETE,不允许 CONFIRM 对话框,不是 DRY 等)

问题是我无法弄清楚如何将 url 帮助程序用于自定义方法......尝试做这样的事情:

<% link_to 'DeleteStuff', @widget, :confirm => 'Are you sure?', :method => :delete %>

但是,当呈现 html 时,它会被忽略。

我显然缺少有关如何使用 link_to 的基本知识,任何帮助将不胜感激!

干杯,JP

4

3 回答 3

2

看起来您在开头缺少等号。它应该是:

<%= link_to 'DeleteStuff', @widget, :confirm => 'Are you sure?', :method => :delete %>
于 2011-02-19T07:27:28.410 回答
2

要解决您的路由并使您的附加操作成为删除方法,请尝试此操作;

在路线.rb

resources :widgets do
  member do
    delete 'delete_stuff'
  end
end
于 2011-02-19T08:26:41.133 回答
1

首先运行rake routes以了解您可以使用哪些 URL 助手。您可能会看到以以下开头的一行:

delete_stuff_widget

然后,您可以附加pathurl获取您应该在视图和控制器中使用的名称。我怀疑你的新 link_to 看起来像:

link_to  "DeleteStuff", delete_stuff_widget_path(@widget), :confirm => "Sure?", :method => :delete
于 2011-02-19T07:22:33.997 回答