Ruby on Rails控制器的字符串顺序

时间:2019-01-17 02:58:52

标签: ruby-on-rails ruby computer-science

因此,我尝试组织我的一种观点,以便以标题名称列出我的网站文章。例如,我的一些文章被命名为“文章pt.1,历史pt.2,社会pt.1等”。我确实使用Articles控制器中的这一行代码对它们进行了正确排序

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

它确实可以使用用户ID进行工作,但是如果我想添加另一个类别并按字母顺序排列它们,我将需要更新每篇文章的用户ID,这不切实际,因为它们在用户名中的数量略超过200数据库。我想以某种方式获取文章标题的一部分,并使用user_id字段像我一样对每个标题进行排序。这样,我可以使用部分字符串(例如“ article pt.1”中的“ article”)对每个人进行排序

感谢您阅读并度过美好的一天!

3 个答案:

答案 0 :(得分:0)

为什么不只按标题排序?假设您的文章表中有一个名为<a href="~abcdefg" target="_blank">Preview file</a> 的列:

对于字母顺序

title

对于逆序字母

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

如果您真的只想按标题的子字符串排序。您必须在articles表中添加一个新列(在本示例中称为slug):

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

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

答案 1 :(得分:0)

首先,关于所需输出的信息不是很清楚,但是基于假设和文章中提到的描述,您似乎想要对字符串字段进行排序不是基于整个值,而是基于子字符串

最好使用顺序来按字母顺序对字符串进行排序。

@articles = Article.order(:title)

它也将达到目的,因为它首先将匹配每个字符串的第一个字母,并同时处理空值。

如果通过已定义的方法实现了目的,为什么还要编写自定义逻辑。

答案 2 :(得分:0)

我能够使用sort函数而不是使用articles控制器上的:title字段进行排序。

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