2014-10-11 72 views
1

我今天开始使用Rails。我决定遵循官方的“入门”文档(http://guides.rubyonrails.org/getting_started.html),这一切都非常顺利,直到我点击“删除文章”部分。我跟着教程,并增加了一个动作:Rails“方法:删除”删除资源不工作

def destroy 
    @video = Video.find(params[:id]) 
    @video.destroy 

    redirect_to videos_path 
end 

我呈现给定方法的删除链接:

<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来将其作为数据方法的方法。

任何人都可以帮忙吗?

+0

Ruby 2.0.0p481 Rails 4.1.6 – MrR 2014-10-11 16:52:58

+0

这是一个很奇怪的问题。我使用的是Ruby 2.0.0p353和Rails 4.1.6,但我得到了正确的链接,其中“method”是“data-method”。唯一的问题是我正在使用HAML。你介意发布你的Gemfile。只是想看看它。 – Touch 2014-10-11 18:14:08

+0

我更新到最新的Ruby(2.1.3),没有任何改变。 – MrR 2014-10-12 09:19:21

回答

2

尝试改变的link_to到button_to

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

+0

同样的东西,method =“delete”而不是data-method :( – MrR 2014-10-12 09:23:25

0

试试这个

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

remote: true中嵌入一些JavaScript代码某处大约在处理AJAX电话和responses的DOM。这将发出一个请求GET_method=delete PARAM这将路线destroy方法大势所趋。