我有一个更新对象的表单,
= 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 :(得分:2)
尝试将此$('#form input[type=hidden]')
更改为更精确的选择器,这样您就不会影响所有隐藏字段。在隐藏字段中添加一个类。您很可能会覆盖可能导致问题的所有隐藏字段。
答案 1 :(得分:2)
这是因为method: put
为表单创建了一个隐藏字段,如下所示:
<input name="_method" type="hidden" value="put">
检查div
元素下面的导轨插入form
。
应用程序如何通过此表单参数的值将其识别为PUT请求而不是POST。因此,像在js中一样修改所有隐藏字段会破坏表单。