!!
преобразует значение вправо от него к его эквивалентному булевскому значению. (Подумайте, что у бедного человека «тип»). Его намерение обычно передает читателю, что код не заботит , какое значение находится в переменной, но что это значение «истина» есть.
Я смог сделать это, используя функцию сортировки вместо порядка, используя поле: title на контроллере статей.
def index
@articles = Article.sort(:title)
end
Почему бы просто не отсортировать по названию? Предполагая, что у вас есть столбец в таблице статей, который называется title
:
Для алфавитного порядка
def index
@articles = Article.order(:title)
end
Для обратного алфавитного порядка
def index
@articles = Article.order(title: :desc)
end
Если вы действительно хотите просто отсортировать по подстроке заголовка. Вам нужно будет добавить новый столбец в таблицу статей (в этом примере он называется slug):
rails g migration AddSlugToArticles slug:text
rails db:migrate
Тогда у вас будет обновить поле слагов для каждой записи
Article.all.each do |article|
new_slug = #your code to generate substring here
article.update(slug: my_string
end
, затем упорядочить по слагу:
def index
@articles = Article.order(:slug)
end
Прежде всего, не очень ясно, какой вывод вам нужен, но исходя из предположения и описания, упомянутых в посте, кажется, что вы хотите отсортировать строковое поле не по целому значению, а по подстроке. .
Лучше использовать порядок для сортировки строк в алфавитном порядке.
@articles = Article.order(:title)
И это также будет служить цели, так как сначала будет соответствовать первому алфавиту каждой строки, а также одновременно обрабатывать нулевые значения.
Зачем писать собственную логику, если цель выполняется уже определенным методом.