这应该是一个简单的查找,但我似乎无法在文档中找到它。
截至目前,select中呈现的所有内容都按id排序,但我希望它能够呈现一个按字母顺序排列的列表(以使其更易于人工扫描)。
我目前用于生成选择的代码:
<%= f.collection_select :item_id, Item.all, :id, :name %>
Karma指出一个可以应用于Item的任何属性的通用答案(不仅仅按字母顺序依据:name)。
目前正在使用Rails v 3.0.5
答案 0 :(得分:0)
还有另一个问题here可能会有所帮助,尽管我还没有尝试过。如果您尝试基于此示例(来自上一个站点),希望在表单中排序将适合您:
class Log < ActiveRecord::Base
has_many :items, :order => "some_col DESC"
end
答案 1 :(得分:0)
您可以在模型中执行此操作,就像设置默认顺序的其他答案一样:
has_many :items, :order => "some_col DESC"
或者,如果您需要偏离默认订单,您还可以在控制器中设置它并在视图中进行访问:
controller.rb
def index
@items = Item.all(:order => 'some_col DESC')
end
index.erb
&lt;%= f.collection_select:item_id,@ item,:id,:name%&gt;
另一个选择是您可以在模型中执行命名范围以进行排序:
item.rb的
named_scope :alphabetically, :order => "some_col DESC"
index.erb
<%= f.collection_select :item_id, Item.alphabetically, :id, :name %>