我的观看代码如下:
<%= b.input :city, as: :select, collection: Lov.where(:remarks => 'lov_city').select('id').select('lov_content'), placeholder: 'Enter City', label: false %>
代码呈现时,我视图中显示的数据列表为#<Lov:0x3241351>
..
实际上Lov表是一个与任何其他表无关的参考表,当我在rails控制台(rails c)中运行并运行相同的“Lov.where(:remarks => 'lov_city').select('id').select('lov_content')
”时,数据显示但是视图是不同。
来自rails console:
jruby-1.7.16.1 :001 > Lov.where(:remarks => 'lov_city').select('id').select('lov_content')
lovs Columns (6.0ms) SHOW FULL COLUMNS FROM `lovs`
Lov Load (8.0ms) SELECT id, lov_content FROM `lovs` WHERE `lovs`.`remarks` = 'lov_city'
=> [#<Lov id: 229, lov_content: "Ayer Baloi">, #<Lov id: 230, lov_content: "Ayer Hitam">, #<Lov id: 231, lov_content: "Ayer Tawar 2">, #<Lov id: 232, lov_content: "Ayer Tawar 3">, #<Lov id: 233, lov_content: "Ayer Tawar 4">
答案 0 :(得分:1)
如果要获取某些选定列,请使用pluck
Lov.where(:remarks => 'lov_city').pluck(:id, :lov_content)
答案 1 :(得分:0)
Lov.where(:remarks => 'lov_city').select('id').select('lov_content')
这将返回一个只有id和lov_content作为属性的活动记录对象。我不确定你要显示什么,但你需要提供一个值集合而不是一个activerecord对象。
首先,您可以一次选择多个属性,而无需编写多个时间选择,例如:
Lov.where(:remarks => 'lov_city').select([:id, :lov_content])
如果你需要提供lov_content列表,那么你可以用它来返回一个lov_content数组:
Lov.where(:remarks => 'lov_city').collect(&:lov_content)