2013-05-09 80 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