Rails – 基于第一个字母进行搜索和排序

我想根据字母列表列出用户…即当我点击字母“A”时,它应该列出以字母A开头的所有用户,B,C等的相同情况。

为此,我使用的是代码

@users = User.search(params[:char]) 

params[:char]我正在传递字母(a,b,c,d等)。

此代码使用此字母搜索单词。

相反,我想要一个以特定字母开头的用户列表。

请问你能建议怎么做。

谢谢。

您可能希望使用类似SQL的查询。

 @users = User.all(:conditions => "name like '#{params[:char]}%'") 

有关更多信息,请参阅有关ActiveRecord Finder方法和MySQL模式匹配的文档。 (即使您使用的是其他数据库,查询也应该非常相似。)

对于想要通过第一个字母搜索的人,您可以执行以下操作:

  Patient.where('substr(name, 1, 1) = ?', 'm') 

更正:我刚刚阅读了区分大小写的注释,因此您可以包含以下区分大小写的任何字母:

  Patient.where('substr(field_name, 1, 1) = ? OR substr(field_name, 1, 1) = ?', 'C', 'c') # there from your controller or model can replace that with Patient.where('substr(name, 1, 1) = ? OR substr(name, 1, 1) = ?', letter.upcase, letter.downcase) 

而已

 @user = User.all :conditions => ['substr(name,1,1) = ?', selected_letter] 

没有足够的声誉来评论,所以为了扩大heriberto perez的答案,你可以lower用户区分大小写的搜索

 Patient.where('substr(lower(name, 1, 1)) = ?', letter.downcase)