简单 - 获取记录ID而不是所需的属性

时间:2013-05-06 05:55:23

标签: ruby-on-rails

这是一个非常简单的问题,但我是新的。我正在尝试创建一个下拉菜单,其中包含从模型中填充的值。然而,我没有显示城市名称,而是获得了记录ID:0x007fee0b7442c0(不确定这些是否被称为id,我认为还有另一个术语)。

控制器:

@cities = City.find(:all, select: "name")

查看:

<%= f.select(:city, @cities) %>

我做错了什么?

5 个答案:

答案 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 ] }