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



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

<%= select_tag :city_id, 
        options_for_select( City.all.collect{|c| [c.name,c.id]} ),
        :data => {  :remote => true,
                    :url => url_for(:controller => "locations", 
                                    :action => "filter_by_city")
                }
%>

这样可以很好地调用我的filter_bycity.js.erb并更新其他一些值。用firebug进行检测表明,它具有数据远程等特性。

然而,更改为下面的form_for助手,我没有远程数据,因此也没有AJAX调用。

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

下拉列表与以前完全一样(需要对参数进行一些混淆才能得到),但除了设置params值之外,它没有其他功能。

我尝试包装:数据在{}中(来自这里的一个法国论坛,但这不是解决办法。

我认为这是一个新手的错误,但如果能找到它,我们将不胜感激。

感谢

::le叹息::

在使用collection_select时,与RoR的某些部分不同,按顺序包含所有参数似乎有点挑剔。尽管我可以(并继续)省略:post,但解决方案中包含了一个空的选项集,并将:data包装在{}中用于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,则OPTIONS不是OPTIONAL。

最新更新