基于此查询:
@cars = Car.where("manufacturer_id IN ?", @mfts.select("id")).limit(30).select("id")
如何在视图中显示汽车的ID(或者我是否需要重写查询)?
3,2,5,12,15,24,34,63,64,65,66,85
非常感谢 - 我已经找到了这个,但找不到合适的问题/答案。
一种解决方案是:
#view
<% @cars.each do |c| %><%= c.id %>,<% end %>
我不知道是否有更好的方法可以解决这个问题 - 这显然会在列表末尾留下一个流浪逗号(这不是一个破坏者)。更优雅的解决方案?
答案 0 :(得分:30)
一行:
<%= @cars.map(&:id).join(",") %>
答案 1 :(得分:8)
如果写&:id
似乎令人困惑,那么另一种方式更具可读性。如果你们都想要访问一个方法或属性,那么内联一个块可能看起来更好。
<%= @cars.map { |car| car.id }.join(", ") %>
P.S ...... map
的另一个名称是collect
..这就是Smalltalk中的名称。
看起来很好!
答案 2 :(得分:5)
使用Rails 3.0+,您现在可以写:
<%= @cars.map { |car| car.id }.to_sentence %>
Rails会在最后两个元素之间适当地添加注释和单词“and”。