这是一个非常简单的问题,但我是新的。我正在尝试创建一个下拉菜单,其中包含从模型中填充的值。然而,我没有显示城市名称,而是获得了记录ID:0x007fee0b7442c0(不确定这些是否被称为id,我认为还有另一个术语)。
控制器:
@cities = City.find(:all, select: "name")
查看:
<%= f.select(:city, @cities) %>
我做错了什么?
答案 0 :(得分:2)
尝试:select(object, method, choices, options = {}, html_options = {})
@cities = City.select(:name)
<%= f.select(:city, @cities.collect {|p| [ p.name, p.name ] }) %>
答案 1 :(得分:2)
如果您只想要数据库中的name
属性,请执行以下操作:
@cities = City.pluck(:name)
# => ["Sydney", "Melbourne", "Canberra"]
答案 2 :(得分:0)
这里有一个使用collection_select的指南
http://www.fmhcc.com.au/ruby/rails/using-collection_select-in-rails/
答案 3 :(得分:0)
您也可以通过改为@cities = City.find(:all, select: "name")
进行改进
@cities = City.pluck(:name)
答案 4 :(得分:0)
如果要在选择框中显示城市名称,并且想要将城市ID作为表单提交的参数传递,请使用此
f.select :city, @cities.map {|c| [ c.name, c.id ] }