当隐藏字段值被修改时,PUT表单作为POST发送

时间:2013-03-18 15:35:29

标签: jquery ruby-on-rails

我有一个更新对象的表单,

= 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错误,并且正确修改了隐藏字段值。

2 个答案:

答案 0 :(得分:2)

尝试将此$('#form input[type=hidden]')更改为更精确的选择器,这样您就不会影响所有隐藏字段。在隐藏字段中添加一个类。您很可能会覆盖可能导致问题的所有隐藏字段。

答案 1 :(得分:2)

这是因为method: put为表单创建了一个隐藏字段,如下所示:

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

检查div元素下面的导轨插入form

应用程序如何通过此表单参数的值将其识别为PUT请求而不是POST。因此,像在js中一样修改所有隐藏字段会破坏表单。