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

2023-12-23

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

<%= 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_by_city.js.erb 并更新一些其他值。使用 firebug 检查表明它具有 data-remote 等属性。

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

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

下拉列表的显示与以前完全相同(并且需要对参数进行一些混乱才能实现),但除了设置参数值之外,它没有任何功能。

我尝试将 :data 包装在 {} 中(来自法国论坛here http://www.developpez.net/forums/d1159153/autres-langages/autres-langages/ruby/rails-3-1-collection_select-remote-true/但这不是治疗方法。

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

Thanks


::叹息::

当使用 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,则选项不是可选的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails form_for collection_select 忽略 select_tag 接受的远程 ajax 调用 的相关文章

随机推荐