Rails form_for collection_select忽略select_tag接受的远程ajax调用

在让我的表单助手工作之前,我使用下面的选择下拉列表:

 { :remote => true, :url => url_for(:controller => "locations", :action => "filter_by_city") } %> 

这完全可以调用我的filter_by_city.js.erb并更新其他一些值。 使用firebug进行检查表明它具有数据远程等属性。

但是,更改为下面的form_for帮助程序,我没有数据远程,因此没有AJAX调用。

  { :remote => true, :url => url_for(:controller => "locations", :action => "filter_by_city") } ) %> 

下拉列表与之前完全一样(并且参数得到了一些混乱),但它除了设置参数值之外没有任何function。

我尝试包装:{}中的数据(来自法国论坛,但这不是治愈方法。

我认为这是一个新手的错误,但任何寻找帮助的人都会非常感激。

谢谢

:: le叹::

当使用collection_select时,与RoR的某些部分不同,似乎按顺序包含所有参数有点挑剔。 即使我可以(并继续)遗漏:post,解决方案结果是包含一个空集的选项,并包装:{} in {} for html_options。

所以,这是有效的:

 <%= f.collection_select(:city_id, City.all, :id, :name, {}, {:data => { :remote => true, :url => url_for(:controller => "locations", :action => "filter_by_city") } } ) %> 

注意{}之后:name和{开始下一行。

外卖消息 – 如果包含html_options,则选项不可选。