【发布时间】:2016-07-11 15:28:50
【问题描述】:
这似乎应该是一件简单的事情,但我无法找到一个说明性的例子。抱歉,如果这个问题是多余的。
所以我有一个 Rails 应用程序,我正在尝试使用 RESTful 资源。这是路线的样子:
config/routes.rb
resources :articles, only: [:index, :create, :destroy]
我想要一个简单的表单来删除这些,以防添加额外内容或其他任何内容。所以这是我到目前为止的表单和控制器:
app/views/articles/_delete.html.haml
%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'
当我提交此内容时,我收到“没有路线匹配 [DELETE] "/articles"”。这是因为删除的路径是articles/:id:
DELETE /articles/:id(.:format) articles#destroy
所以我的目标是让提交按钮获取 id,然后使用 Delete 方法发送到 /articles/:id。如果有帮助,我在 Rails 4.1 上。
我认为这里真正的痛点不是完全理解表单助手如何指向一个动作或传递数据。如果有人能阐明我将不胜感激。
我看到我可以在 form_for 方法上定义一个 url,如下所示:
= form_for @article, method: :delete, url: articles_path do |f|
但是我怎样才能将表单中的 id 获取到该 url 中呢?
【问题讨论】:
-
您不应该在视图文件中写入数据库调用。您可以创建对象
@articles = Article.all.sort.reverse.map { |a| [a.name, a.id] }并在视图文件中使用它。 -
好点,会的。
标签: ruby-on-rails ruby