2012-04-29 50 views
8

據我所知,link_to用於get方法,而button_to用於post方法。Haml:link_to vs button_to

另一方面,我被告知,使用HTML5語義,<button>用於任何類型的可點擊...以及按鈕。如果我有一個可點擊的按鈕將用戶發送到表單來填寫,我應該創建一個button_tolink_to

回答

15

你覺得更簡單。 該方法是Rails助手,並且與haml沒有任何關係。 是的,一種方法是用於get和另一種用於post方法。如果您需要將任何數據發佈到控制器,請使用button_to(例如,刪除記錄時)。否則,link_to就夠了。

此外,你可以使用:method參數使link_to發佈數據:

= link_to "Something", some_path, :method => :post 

回答你的問題,使用link_to

+0

這增加了方法:'post''不是'data-method:'post''到鏈接 –

2

如果您想簡單地將用戶發送到某個地方,那就是獲取請求。所以你應該在這種情況下使用link_to。順便說一下,如果您要指定:method,則可以使用link_to發送發佈請求和其他請求(如button_to)。例如:=link_to "some path", some_path, :method => :get

3

應該使用鏈接到用戶指向一個資源,就像一篇文章。

但是你必須傾向於使用按鈕指向一個動作(如編輯頁面上的「創建」/「發送」)。如果這不符合你的界面 - 他們喜歡作爲鏈接。

這裏的原因:你不能點你的用戶通過任何如果link_to他缺乏對JavaScript的支持非GET動作。因此,在這種情況下,按鈕是唯一可以觸發發送/銷燬操作的選項。

隨意使用,如果你的鏈接指向的網頁,最終導致資源的修改(鏈接/按鈕編輯/創建,顯示一個表單頁面)這兩種方法,像你的情況。

0

#link_to之間的主要原理差,並且#button_to在於#link_to只是創建一個鏈接標記A,使簡單的AJAX請求而無需額外的數據,而#button_to創建具有自定義數據的FORM,所以形式可以是用於向Web服務器發出擴展的AJAX請求。表單數據包括嵌入的CSRF令牌,用於驗證請求。在#link_to的情況下,必須對CSRF令牌進行編程併發送on_click事件。