【问题标题】:Rails "method:delete" DELETE of resource not workingRails“方法:删除”资源的删除不起作用
【发布时间】: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', '~&gt; 4.0.3' gem 'uglifier', '&gt;= 1.3.0' gem 'coffee-rails', '~&gt; 4.0.0' gem 'jquery-rails' gem 'turbolinks' gem 'jbuilder', '~&gt; 2.0' gem 'sdoc', '~&gt; 0.4.0', group: :doc gem 'spring', group: :development gem 'devise'

标签: ruby-on-rails ruby methods http-delete


【解决方案1】:

尝试将 link_to 更改为 button_to

我最近也遇到了这个问题。删除调用在 link_to 上不起作用。

【讨论】:

  • 同样的事情,method="delete" 而不是 data-method :(
【解决方案2】:

试试这个

<td><%= link_to 'Destroy', video_path(video), method: :delete, data: { confirm: 'Are you sure?' }, remote: true %></td>

remote: true 在处理AJAX 调用和responses 的DOM 中的某处嵌入一些JavaScript 代码。这将发送带有_method=delete 参数的GET 请求,该参数将路由到destroy 方法最终。

【讨论】:

    猜你喜欢
    • 2021-12-26
    • 2012-09-18
    • 2022-09-24
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    相关资源
    最近更新 更多