簡體   English   中英

帶有字符串的 Ruby on Rails 控制器順序

[英]Ruby on Rails controller order with strings

所以我試圖組織我的觀點之一,以便我網站的文章按標題名稱列出。 例如,我的一些文章被命名為“文章 pt.1、歷史 pt.2、社會 pt.1 等”。 我確實使用文章控制器中的這行代碼對它們進行了正確排序

def index
    @articles = Article.order(:user_id)
end

它確實使用用戶 ID 工作,但是如果我想添加另一個類別並按字母順序排列它們,我需要更新每篇文章的用戶 ID,這不切實際,因為它們在數據庫中的數量略高於 200。 我想要的是以某種方式取一部分文章標題並像我一樣使用 user_id 字段對每個標題進行排序。 通過這種方式,我可以使用字符串部分(例如“article pt.1”中的“article”)對每一個進行排序

感謝您的閱讀,祝您有美好的一天!

為什么不直接按標題排序? 假設您的文章表中有一個名為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

然后你必須更新每條記錄的 slug 字段

Article.all.each do |article|
  new_slug = #your code to generate substring here
  article.update(slug: my_string
end

然后按 slug 排序:

def index
  @articles = Article.order(:slug)
end

首先,您想要的輸出不是很清楚,但是根據帖子中提到的假設和描述,您似乎想不基於整個值而是基於子字符串對字符串字段進行排序。

最好使用 order 來按字母順序排序字符串。

@articles = Article.order(:title)

它也將用於此目的,因為它將首先匹配每個字符串的第一個字母表並同時處理空值。

如果目的已由已定義的方法實現,為什么還要編寫自定義邏輯。

我能夠使用排序函數而不是使用文章控制器上的 :title 字段進行排序。

def index
  @articles = Article.sort(:title)
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM