对于字母表中的每个字母,我在rails中都有一个link_to方法(早期,稍后会将其放入循环中)。我在另一个页面上的控制台上也有同样的东西,但我的页面上的信件却不能正常工作。
我的模型中包含以下内容:
def index
user_relation = case params[:username].present?
when true then User.where(:username => params[:username])
else User
end
@users = user_relation.paginate :page=>params[:page], :order => 'created_at desc', :per_page => 10
end
这是我的索引中的一个例子:
<%= link_to 'A', users_path(:username => 'A'), {:style=>'color:#FFFFFF', :class => "tabel-3"}%>
现在,如果我单击A,它不会返回任何结果,尽管有许多用户使用字母A,但是如果我将名称AdrianShaw (我的数据库中的用户之一)放在括号中,然后单击A,它将返回确切的用户。它所做的似乎是搜索,但只搜索精确匹配的结果,任何少于完整单词的结果都不会返回。
我该怎么做才能让所有用户的第一个字母都是A,以此类推?
发布于 2012-02-29 21:48:12
您需要使用like运算符进行搜索:
when true then User.where("username LIKE ?", "#{params[:username]}%")
使用LIKE
运算符和%
,您可以搜索用户名以params[:username]
开头的记录。
https://stackoverflow.com/questions/9507142
复制