Rails -绑定与不绑定Rails集合选择



所以当我将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}) %>

工作正常

我只是想了解为什么一个有效而另一个不起作用背后的理论?

我认为让你困惑的,主要是你对这里发生的事情的概念。

Nothing通过调用form helper对象上的方法将任何东西"绑定"到任何东西。有一些表单帮助器方法,如collection_select,可用于构建HTML元素。有一些表单构建器具有方法,例如collection_select,可以为绑定到对象的表单构建HTML表单元素。

您在这里遇到的问题是FormOptionsHelper#collection_select方法和FormBuilder#collection_select方法不是相同的方法,并且不接受相同的参数:

FormOptionsHelper#collection_select vs FormBuilder#collection_select

特别注意所提供的参数。同样值得注意的是,FormBuilder实际上是将这项工作委托给模板(即FormOptionsHelper),并根据需要调整参数。

最新更新