这似乎应该是一件简单的事情,但我无法找到一个说明性的例子。如果这个问题多余,请道歉。
所以我有一个rails应用程序,我正在尝试使用RESTful资源。这就是路线的样子:
配置/ routes.rb中
description
我想要一个简单的表单来删除这些以防万一添加额外的东西。所以这是我到目前为止的形式和控制器:
应用程序/视图/物品/ _delete.html.haml
resources :articles, only: [:index, :create, :destroy]
当我提交此内容时,我会收到'No route matches [DELETE]“/ articles”'。这是因为删除路由是articles /:id:
%h1 Delete Article
- all_articles = Article.all.sort.reverse.map { |a| [a.name, a.id] }
= form_for @article, method: :delete do |f|
.form-group
= f.select :id, options_for_select(all_articles), class: 'form-control'
= f.submit 'Delete', class: 'btn btn-danger'
所以我的目标是让提交按钮获取id,并使用Delete方法发送到/ articles /:id。如果它有帮助,我就在Rails 4.1上。
我认为这里真正的痛点不是完全理解表单助手如何指向一个动作或传递数据。如果有人能够阐明,我会很感激。
我看到我可以在form_for方法上定义一个url,如下所示:
DELETE /articles/:id(.:format) articles#destroy
但是如何将表单中的id转换为该URL?
答案 0 :(得分:2)
请尝试
= form_for @article, method: :delete, url: articles_path(@article) do |f|
url
可以省略。你可以试试这个
= form_for @article, method: :delete do |f|
感谢@unused