我的模型中有一个选择列表,其中列出了雇主姓名的人名:
<li>Case Handler Name<span><%= f.select :person_id, Person.all.collect { |x| [x.name_and_company, x.id] } %></span></li>
def name_and_company
return "#{personname} (#{company})"
end
是否可以强制选择列表按字母顺序输出?
我假设我会在那里放一个订单标签......某处?
(:order => 'personname DESC')
谢谢,
丹尼
答案 0 :(得分:10)
你可以这样做
# controller
@people = Person.order_by('personname ASC').collect {|x| [x.name_and_company, x.id] }
# model
named_scope :order_by, lambda { |o| {:order => o} }
# view
<%= f.select :person_id, @people %>
答案 1 :(得分:8)
答案:
#users_controller.rb
def index
@people = Person.alphabetically
end
#user.rb
scope :alphabetically, order("name ASC")
#index.haml
= f.select :person_id, @people.all.collect { |p| [p.name, p.id] } %>
答案 2 :(得分:4)
更容易......
<%= f.select :name, options_from_collection_for_select(Person.order("name ASC"), :name, :name), :prompt => 'Select' %>
注意:不需要自定义方法或添加到控制器