Как я могу заказать товары в поле формы collection_select? - PullRequest
1 голос
/ 28 июня 2011

Это должен быть простой поиск, но я не могу найти его где-либо в документации.

На данный момент все, отображаемое в выбранном элементе, упорядочено по id, но я бы хотел, чтобы вместо него отображался алфавитный список (чтобы сделать его более читаемым человеком).

Код, который я сейчас использую для генерации выбора:

<%= f.collection_select :item_id, Item.all, :id, :name %>

Очки кармы за обобщенный ответ, который может применяться к любому атрибуту предмета (а не только в алфавитном порядке: имя).

В настоящее время используется Rails v 3.0.5

Ответы [ 2 ]

0 голосов
/ 28 июня 2011

Вы можете сделать это в модели, как и другой ответ, чтобы установить порядок по умолчанию:

has_many :items, :order => "some_col DESC"

Или, если вам нужно отклониться от порядка по умолчанию, вы также можете установить его в контроллере и получить доступ к представлению:

controller.rb

def index
  @items = Item.all(:order => 'some_col DESC')
end

index.erb

<% = f.collection_select: item_id, @items,: id,: name%>


Другой вариант - вы можете сделать именованную область видимости внутри вашей модели для заказа:

item.rb

named_scope :alphabetically, :order => "some_col DESC"

index.erb

<%= f.collection_select :item_id, Item.alphabetically, :id, :name %>
0 голосов
/ 28 июня 2011

Есть еще один вопрос здесь , который может помочь, хотя я еще не попробовал его.Если вы попытаетесь на основе этого примера (с предыдущего сайта), надеюсь, сортировка в форме будет работать для вас:

class Log < ActiveRecord::Base
  has_many :items, :order => "some_col DESC"
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...