2014-11-21 39 views
1

我剛開始使用handlebars.js express.js扮演我的模板 我想創造一個刪除鏈接,這應該是休息和使用http動詞DELETE A HREF鏈接而不是GET。創建一個使用HTTP DELETE在express.js動詞

我終於想出了一個方法來實現它,通過創建如下的鏈接, 添加data-method的delete,然後在客戶端使用jquery攔截 我的鏈接使用DELETE動詞。

我的聯繫是:

<a href="/destroy/{{_id}}" data-method="delete">delete</a> 

<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<script> 
$("a[data-method='delete']").click(function(){ 
    $.ajax({ 
     url: this.getAttribute('href'), 
     type: 'DELETE' 
    }) 
    return false 
}) 
</script> 

這是express.js/handlebars.js實現這一目標的方式推薦?沒有任何人有實現這一目標的一個更好的辦法?我一直沒能找到類似的東西如何軌做它的助手裏,如:

link_to("Destroy", "http://www.example.com", method: :delete) 

回答

0

在你的情況的Rails創建form,並將其方法提供給您的一個:

方法:HTTP動詞的符號 - 該修飾符將動態創建HTML表單並立即提交表單以使用指定的HTTP動詞進行處理。 link_to in Rails Doc

你可以實現自己在javascript:

var link_to = function (text, href, method) { 
    return '<form action="' + href + '" method="' + method + '" ><button>'+ text + '</button></form>' 
} 

您可以使用CSS樣式此按鈕作爲一個正常的鏈接。

0

感謝@tikider我沒有根據您的建議更多的研究和跨中間件調用的方法,倍率(https://github.com/expressjs/method-override)因爲我想處理刪除您的建議是比較齊全的,因爲形式不能發送DELETE

在此之前我是如何解決它,我第一次安裝NPM的方法,覆蓋:

sudo npm install method-override --save 

它貼在我的應用中間件處理程序:

// override with POST having ?_method=DELETE 
app.use(methodOverride('_method')); 

然後我的看法我把我的刪除按鈕的

<form method="POST" action="/destroy/{{_id}}?_method=DELETE"> 
    <button type="submit">Delete</button> 
</form> 

現在每次我點擊刪除它是由法,覆蓋改爲DELETE和使用中間件像抓左右的時間內我的應用程序:

app.delete('/destroy/:id', function(req, res) { 
    //... 
} 

當我使用handlebars模板時,我可以將它添加爲輔助方法。