2015-04-01 50 views
0

我一直在尝试创建一个选择标签来创建一个下拉菜单,该列表将列出城市数据库中的所有项目。我能够做到这一点,但我不得不硬编码一个HTML表单标签。使用form_for创建选择标签,并从数据库中提取数据

<form> 
    <%= select_tag :city, options_from_collection_for_select(City.all, :id, :city_name), class: "form-control" %> 
</form> 

现在我试图把这段代码转换,这样我可以将其放置在标签的form_for,但我不断收到此错误:从f.collection_select线“未定义的方法`city_id'”。

<%= form_for @city do |f| %> 
    <div class="form-group"> 
     <%= f.label :city_id, "City list" %> 
     <%= f.collection_select :city_id, City.all, :id, :city_name %> 
    </div> 
<% end %> 

我试着删除:city_id,但后来我得到一个“错误的参数数目(3 4..6)”,我代替:与零city_id和我得到同样的未定义的方法错误。

我新来的铁轨,所以任何帮助将不胜感激!

回答

0

form_for帮手包装一个对象(在你的情况下,这是@city),然后创建表单域直接填充它的属性。因此,根据您的错误消息,听起来像@city不响应:city_id。换句话说,@city.city_id会给出同样的错误。所以你需要弄清楚你打算在这里填写什么属性。

+0

谢谢!现在我懂了。我的城市数据库中没有“city_id”,我只是使用了“id”而已。这是一个非常简单的问题,但我还不知道Rails的来龙去脉。 – AClement 2015-04-01 03:07:21

相关问题