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