因此,我尝试组织我的一种观点,以便以标题名称列出我的网站文章。例如,我的一些文章被命名为“文章pt.1,历史pt.2,社会pt.1等”。我确实使用Articles控制器中的这一行代码对它们进行了正确排序
def index
@articles = Article.order(:user_id)
end
它确实可以使用用户ID进行工作,但是如果我想添加另一个类别并按字母顺序排列它们,我将需要更新每篇文章的用户ID,这不切实际,因为它们在用户名中的数量略超过200数据库。我想以某种方式获取文章标题的一部分,并使用user_id字段像我一样对每个标题进行排序。这样,我可以使用部分字符串(例如“ article pt.1”中的“ article”)对每个人进行排序
感谢您阅读并度过美好的一天!
答案 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