我一直在尝试创建一个选择标记来创建一个下拉菜单,该菜单将列出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所以非常感谢任何帮助!
答案 0 :(得分:0)
form_for
帮助程序包装一个对象(在您的情况下,这是@city
),然后直接创建表单字段以填充其属性。因此,根据您的错误消息,@city
听起来不响应:city_id
。换句话说,@city.city_id
会给出相同的错误。所以你需要弄清楚你打算在这里填写什么属性。