Сделать выбор списка вывода в алфавитном порядке в Rails? - PullRequest
6 голосов
/ 16 августа 2010

В моей модели есть список выбора, в котором перечислены имена людей с именами их работодателей:

<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 ]

10 голосов
/ 16 августа 2010

Вы можете сделать это так

# 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 %>
8 голосов
/ 21 ноября 2012

Ответ:

    #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] } %>
4 голосов
/ 19 апреля 2013

Еще проще ...

<%= f.select :name, options_from_collection_for_select(Person.order("name ASC"), :name, :name), :prompt => 'Select' %>  

Примечание: не требует пользовательских методов или дополнений к контроллеру

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...