在Rails中按字母顺序选择列表输出?

时间:2010-08-16 19:08:51

标签: ruby-on-rails list select

我的模型中有一个选择列表,其中列出了雇主姓名的人名:

<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')

谢谢,

丹尼

3 个答案:

答案 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' %>  

注意:不需要自定义方法或添加到控制器