Rails"方法:删除"删除资源不起作用

时间:2014-10-11 16:40:45

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

我今天开始使用Rails。我决定跟随官方的#34;入门"文档(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>

不幸的是,这不起作用。永远不会调用destroy控制器,也不会删除视频。使用内置服务器,我意识到没有DELETE但只有GET请求实际到达服务器。

我认为问题在于Rails评估link_to函数的方式。渲染的链接具有以下形式:

<a data-confirm="Are you sure?" href="/videos/3"  method="delete">Destroy</a>

但是,如果我将HTML标记手动更改为数据方法,可以完美地运行。显然,我需要rails将它作为数据方法呈现给它。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

尝试将link_to更改为button_to

我最近也遇到过这个问题。删除调用没有在link_to上工作。

答案 1 :(得分:0)

试试这个

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

remote: true在DOM的某处嵌入了一些JavaScript代码,用于处理AJAX调用和responses ..这将发送GET请求_method=delete } param将最终路由到destroy方法。