2012-03-13 60 views
4

之前得到我的表单辅助工作,我用的是低于我的选择下拉列表:的Rails的form_for collection_select忽略远程AJAX调用select_tag接受

<%= 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和更新一些其他值。用萤火虫检查显示它具有数据远程等属性。

但是,如果更改为下面的form_for helper,则不会获得数据远程,因此也不会发生AJAX调用。

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

下拉似乎与之前完全相同(并采取了一些混混用参数来获取),但它没有超过设定值PARAMS其他功能。

我试过包装:数据{}(从法国论坛here但事实并非治愈

我以为这是一个新手的错误,但任何帮助发现它很感激

感谢

回答

7

::乐感叹::

当使用collection_select,不像回报率的一些地方,现在看来,这是一个有点挑剔,包括为了所有参数。即使我可以(和继续)离开out:post,soluti原来是包含一个空选项集,并在{}中为html_options打包数据。

所以,这是什么在起作用:

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

注意{}后:名称和{开始的下一行。

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