Порядок контроллера Ruby on Rails со строками

!! преобразует значение вправо от него к его эквивалентному булевскому значению. (Подумайте, что у бедного человека «тип»). Его намерение обычно передает читателю, что код не заботит , какое значение находится в переменной, но что это значение «истина» есть.

-3
задан Shane Callaghan 17 January 2019 в 02:58
поделиться

3 ответа

Я смог сделать это, используя функцию сортировки вместо порядка, используя поле: title на контроллере статей.

def index
  @articles = Article.sort(:title)
end
0
ответ дан Shane Callaghan 17 January 2019 в 02:58
поделиться

Почему бы просто не отсортировать по названию? Предполагая, что у вас есть столбец в таблице статей, который называется 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
0
ответ дан sheepdog 17 January 2019 в 02:58
поделиться

Прежде всего, не очень ясно, какой вывод вам нужен, но исходя из предположения и описания, упомянутых в посте, кажется, что вы хотите отсортировать строковое поле не по целому значению, а по подстроке. .

Лучше использовать порядок для сортировки строк в алфавитном порядке.

@articles = Article.order(:title)

И это также будет служить цели, так как сначала будет соответствовать первому алфавиту каждой строки, а также одновременно обрабатывать нулевые значения.

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

0
ответ дан Rohan 17 January 2019 в 02:58
поделиться