使用form_for创建选择标记,从数据库中提取数据

时间:2015-04-01 01:37:25

标签: ruby-on-rails

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

<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 for 4..6)”,我用nil替换了:city_id,我得到了相同的未定义方法错误。

我刚开始使用rails所以非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

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