2014-10-11 82 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方法大勢所趨。