2013-03-18 27 views
0

我有更新的對象的形式中,PUT形式被髮送作爲POST時隱藏字段值被修改

= form_tag (..., method: :put) do

的HTML會說method="post"但形式將利用PUT正確提交。當我嘗試基於更改隱藏字段的值按鈕組的選擇:

$('#form .btn-group button').click(function(e) { 
    $('#form input[type=hidden]').val($(this).data('value')); 
    }); 

的形式使用POST,給我404我想我在jquery_ujs打破提交的東西,但它的過了幾天,我仍然沒有任何線索。沒有發生JavaScript錯誤,並且隱藏的字段值被正確修改。

+0

你可以檢查rails日誌,它爲什麼給404錯誤? – codeit 2013-03-18 15:38:04

+0

@codeit 404是因爲沒有路由匹配POST/tags /:id。一旦表單與PUT一起提交,它就匹配'update'動作的路由。 – Leito 2013-03-18 15:45:20

回答

2

嘗試將此$('#form input[type=hidden]')更改爲更精確的選擇器,以免影響所有隱藏的字段。向隱藏字段添加一個類。您很可能會覆蓋可能導致問題的所有隱藏字段。

+0

謝謝,我會選擇你的答案,因爲它是第一個。我只需要等4分鐘。 – Leito 2013-03-18 15:43:44

2

這是因爲method: put的,看起來像的形式創建了一個隱藏字段:

<input name="_method" type="hidden" value="put"> 

檢查導軌立即form元素下面插入的div

這就是應用程序如何將它識別爲PUT請求而不是POST - 通過此表單參數的值。因此,修改所有隱藏字段,就像你在js中做的那樣會打破錶格。

+0

感謝您解釋,我必須對選擇器更加小心......現在我應該知道。 – Leito 2013-03-18 15:44:34