Rails 3:通过js / prototype触发远程表单上的提交

时间:2012-05-16 18:25:03

标签: ruby-on-rails ajax ruby-on-rails-3 prototypejs onsubmit

我正在努力将Rails 2.3.14中的旧Rails应用程序转换为Rails 3.0。

它仍在使用Prototype(转换为jQuery是我们迁移路径中的后续步骤),所以请不要回答jQuery。

我们有很多下拉式表格,我们目前在其中一个下拉列表发生变化时以AJAX形式提交。

Rails 2.3 版本中,我们使用了form_remote_tag,然后下拉列表的onchange事件会调用$('myform').onsubmit();来提交表单ajaxily。

Rails 3.0 分支中,我们已将表单转换为使用form_tag :remote => true,但是,当我们从下拉列表中选择一个选项时,Firebug会报告{ {1}}

$('myform').onsubmit is not a function.更改为仅$('myform').onsubmit();会导致表单提交,但不是ajaxily

有关如何在下拉列表中使用onchange事件以及使用Prototype和Rails 3提交表单的任何建议吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

想出来。我只是从:remote => true调用中删除了form_tag,并在其中添加了以下参数...

:onsubmit => "new Ajax.Request('#{url}', {asynchronous:true, evalScripts:true, method:'get', parameters:Form.serialize(this)}); return false;"

这基本上再现了旧form_remote_tag曾经做过的事情。

这不是一个永久的解决方案。只是踏脚石,让我们将这个应用程序转换为jQuery。