rails form_remote_tag和onselect submit

时间:2009-10-15 17:12:40

标签: ruby-on-rails ruby ajax forms rjs

我有一个form_remote完美地用于表单货币。我想要做的唯一改变是取消选择框的提交按钮。所以他们只需点击正确的货币即可提交ajax请求。

<%= collection_select(:currency, :set, Currency.find(:all, :conditions => 'primary_source = "ECB"'), :code, :pretty_name, { :selected => session[:currency] }, { :onchange => "$('currency').submit()" } )  %>

onchange适用于select,但不是使用远程ajax请求,而是重新刷新整个页面...而不是只有一个元素,我如何启动remote_tag,以便它点击提交会做同样的事情?

1 个答案:

答案 0 :(得分:1)

您遇到的问题是Rails在表单的onsubmit属性中将remote_form_for实现为内联Ajax方法。问题是提交事件仅在用户实际提交表单时触发,而不是通过调用$('form')。submit()。实际上我相信一些浏览器可能会触发事件,但其他浏览器则不会。在任何情况下,这都不适用于您发现的一般情况。

一种可能的解决方法,我只在Firefox 3.5中对此进行了测试,因此您的里程可能会有所不同,就是直接将该属性称为函数。所以在你的:onchange put:

$('currency').onsubmit()

如果这不起作用,您可能需要查看生成的源,并将AJAX请求从onsubmit属性中拉出,并转换为可以直接调用的独立方法。

据我所知,没有跨浏览器方式来可靠地触发本机事件。