如何在collection_select中包含选项文本?

时间:2012-06-09 05:21:14

标签: ruby-on-rails

在Rails应用程序中,我正在尝试格式化选择标记中的值。

这样的东西
<%= f.collection_select(:country_id, Country.order(:name), :id, :name.to_s.downcase) %>

downcase方法没有任何效果。我应该能够以这种方式使用它吗?如果没有,我该怎么办?

谢谢

1 个答案:

答案 0 :(得分:3)

您可以为模型添加方法并为其添加符号

请参阅http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-collection_select

class Country
  def name_to_lower
    self.name.downcase
  end
end

<%= f.collection_select(:country_id, Country.order(:name), :id, :name_to_lower) %>

或使用select - http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-select

<%= f.select(:country_id, Country.order(:name).map {|x| [x.name.downcase, x.id] } %>

如果您的数据库区分大小写,则可能需要指定案例排序

<%= f.select(:country_id, Country.order("UPPER(name)").map {|x| [x.name.downcase, x.id] } %>