2010-01-04 57 views
11

在新服务器上重新安装Rails应用程序。部分应用程序可以根据用户选择的按钮在两个方向中的某一方向进行分叉。这部分不起作用,并且当我查看日志时,我看到了我给出的表单的值,外,其余部分为params散列的commit部分。这似乎是应用程序无法按预期工作的原因(因为params[:commit]中没有任何内容,但我不知道为什么提交不会传入;请求肯定是POST请求,并且所有其他参数都在那里。Rails未通过“提交”按钮参数

+0

您是否找到了解决方案?自从我使用我的网页设计师更新我的模板后,我遇到了类似的问题。使用'基本'模板,全部是文件,但使用设计器(HTML有效)模板,我没有提交提交值。 – 2010-01-05 12:13:47

+3

在我的情况下,这是因为实际提交表单之前有一个jQuery弹出窗口。 – 2010-01-05 14:04:49

+2

感谢您的评论韦恩,这让我感到这是为什么造成我的。就我而言,我们有一个通用的jQuery提交事件绑定,它禁用了提交按钮(以避免双重提交)。从这个表格中删除固定的东西。 – chrisrbailey 2010-01-28 22:46:41

回答

7

曾与禁用按钮上提交特征的simular问题。在提交表单之前,我们通过添加具有相同名称和值的隐藏输入字段来解决此问题。

function disableButtonAndSubmit() 
{ 
    var input = $("<input type='hidden' />").attr("name", $(this)[0].name).attr("value", $(this)[0].value); 
    $(this).closest('form').append(input); 
    $(this).attr('disabled', 'disabled').html('Loading…'); 
    $(this).closest('form').submit(); 
} 

$('#somewhere button').click(disableButtonAndSubmit); 
0

我之前看过类似这样的东西,在不同的浏览器如何通过表单上的提交按钮的值不一致的情况下,我发现唯一实用的解决方案是在按钮中设置javascript以设置隐藏字段,并使用该值,而不是

下面是我的一些代码到一个区分保存并退出,肚里的一种方式,并保存并继续哪去了另一个:

<%= hidden_field_tag 'step_commit', '' %> 
    <span style="float:left;"> 
    <%=submit_tag 'Cancel', :name=>'cancel', :onclick=>"javascript:location.href='/';return false;" %> 
    <%=submit_tag 'Save and Exit', :name=>'exit', :onclick=>"javascript:$('step_commit').value='exit';" %> 
    </span> 
    <span style="float:right;"> 
    <%=submit_tag 'Save and Continue', :name=>'continue', :onclick=>"javascript:$('step_commit').value='continue';" %> 
    </span> 
+0

奇怪的是它在旧的服务器上工作正常,但我们现在只是将它移动并停止。 – 2010-01-04 16:29:38

1

检查您的提交输入是否被命名为提交,或者它的标签将不会被发送。

生成的HTML应该是:

<input type="submit" name="commit" label="...> 
2

我遇到了同样的问题,这里的答案指出我正确的方向。但是,并非建议添加隐藏表单输入或放弃双重提交块,您可以简单地在双提交块中添加一个setTimeout函数,超时时间为1毫秒,这使得双提交块可以在不阻止的情况下工作提交按钮。

+0

这只是我需要的解决方案。谢谢! – 2015-01-05 23:15:37

5

只需添加name: "commit", value: "Save"到您的表单提交按钮:

form_for @object do |f| 
    ... 
    f.button :submit, "Save", name: "commit", value:"Save" 
end 

,然后你将有params[:commit]等于"Save"在控制器中。