2012-03-13 63 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,則選項不可選。