2013-05-09 81 views
0

所以我正在經歷我當collection_select連接到我的form_for對象,像這樣的錯誤:導軌 - 綁定與不綁定的軌道集合中選擇

<%= f.collection_select(:city_id, @cities, :id, :name, {:prompt => "Select a City"}, {:id => 'cities_select', multiple: true}) %> 

,並得到錯誤:

undefined local variable 'city_id' 

但是,當我不綁定選擇像這樣:

<%= collection_select(nil, :city_id, @cities, :id, :name, {:prompt => "Select a City"}, {:id => 'cities_select', multiple: true}) %> 

它工作正常。

我只想理解爲什麼一個人工作而另一個人不工作的理論?

回答

1

我想什麼讓你絆倒,主要是你對這裏發生了什麼的概念。

通過調用窗體幫助對象上的方法,什麼都不是「綁定」任何東西。有形式助手方法,如collection_select,可用於構建HTML元素。有一些表單構建器具有方法,如collection_select爲綁定到對象的表單構建HTML表單元素。

您在這裏的問題是,FormOptionsHelper#collection_select方法和FormBuilder#collection_select方法是不一樣的方法,並且不接受相同的參數:

FormOptionsHelper#collection_select VS FormBuilder#collection_select

要特別注意的參數提供。還值得注意的是FormBuilder實質上delegates this work到模板(即FormOptionsHelper)並根據需要調整參數。

+0

謝謝,我會看看文檔! – Zephyr4434 2013-05-09 02:20:14