【发布时间】:2014-10-11 16:40:45
【问题描述】:
我今天开始使用 Rails。我决定遵循官方的“入门”文档(http://guides.rubyonrails.org/getting_started.html),一切都非常顺利,直到我点击了“删除文章部分”。我按照教程添加了一个操作:
def destroy
@video = Video.find(params[:id])
@video.destroy
redirect_to videos_path
end
我正在使用给定的方法呈现 DELETE 链接:
<td><%= link_to 'Destroy', video_path(video), method: :delete, data: { confirm: 'Are you sure?' } %></td>
不幸的是,这不起作用。销毁控制器永远不会被调用,视频也不会被删除。使用内置服务器,我意识到实际上并没有 DELETE 而只有一个 GET 请求到达服务器。
我认为问题在于 Rails 评估 link_to 函数的方式。呈现的链接具有以下形式:
<a data-confirm="Are you sure?" href="/videos/3" method="delete">Destroy</a>
但是,如果我手动将 HTML 标记更改为数据方法,它可以完美运行。显然,我需要 rails 将它呈现为 data-method 的方法。
有人可以帮忙吗?
【问题讨论】:
-
Ruby 2.0.0p481 Rails 4.1.6
-
这是一个非常奇怪的问题。我在 Ruby 2.0.0p353 和 Rails 4.1.6 上,但我得到了正确的链接,其中“方法”是“数据方法”。唯一的问题是我正在使用 HAML。您介意发布您的 Gemfile。只是想看看它。
-
我更新到最新的 Ruby (2.1.3),没有任何改变。
-
@Touch
source 'https://rubygems.org' gem 'rails', '4.1.6' gem 'sqlite3' gem 'sass-rails', '~> 4.0.3' gem 'uglifier', '>= 1.3.0' gem 'coffee-rails', '~> 4.0.0' gem 'jquery-rails' gem 'turbolinks' gem 'jbuilder', '~> 2.0' gem 'sdoc', '~> 0.4.0', group: :doc gem 'spring', group: :development gem 'devise'
标签: ruby-on-rails ruby methods http-delete