Ruby on rails rails表单\u远程\u标记并选择提交

Ruby on rails rails表单\u远程\u标记并选择提交,ruby-on-rails,ruby,ajax,forms,rjs,Ruby On Rails,Ruby,Ajax,Forms,Rjs,我有一个form_遥控器,可以完美地为form currency工作。我想做的唯一更改是选择框的Doaway with submit按钮。因此,他们只需单击正确的货币,它就会提交ajax请求 <%= collection_select(:currency, :set, Currency.find(:all, :conditions => 'primary_source = "ECB"'), :code, :pretty_name, { :selected => session[

我有一个form_遥控器,可以完美地为form currency工作。我想做的唯一更改是选择框的Doaway with submit按钮。因此,他们只需单击正确的货币,它就会提交ajax请求

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

onchange适用于select,但它不使用远程ajax请求,而是引用整个页面。。。除了一个元素之外,我如何启动remote_标记,使其执行与单击submit相同的操作?

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

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

$('currency').onsubmit()
如果这不起作用,您可能需要查看生成的源代码,并将AJAX请求从onsubmit属性中拉出来,放到一个可以直接调用的独立方法中


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

这适用于firefox、chrome和safari。。。现在已经足够好了。谢谢