我想根据字母列表列出用户...即当我点击字母“A”时 应列出以字母A开头的所有用户,B,C等的相同案例
为此我使用代码
@users = User.search(params[:char])
在params[:char]
我传递的是字母(a,b,c,d等)。
此代码使用此字母搜索单词。
相反,我想要一个以特定字母开头的用户列表。
请您建议如何使用。
感谢。
答案 0 :(得分:3)
您可能希望使用类似SQL的查询。
@users = User.all(:conditions => "name like '#{params[:char]}%'")
有关详细信息,请参阅ActiveRecord Finder Methods和MySQL Pattern Matching上的文档。 (即使您使用的是其他数据库,查询也应该非常相似。)
答案 1 :(得分:2)
对于想要按第一个字母搜索的人,您可以执行以下操作:
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)
就是这样
答案 2 :(得分:0)
@user = User.all :conditions => ['substr(name,1,1) = ?', selected_letter]
答案 3 :(得分:0)
没有足够的声誉可以发表评论,因此要扩展 heriberto perez 答案,您可以使用lower
进行区分大小写的搜索
Patient.where('substr(lower(name, 1, 1)) = ?', letter.downcase)