如何在单个字段中为name,email和created_at添加搜索。
如果没有搜索,我的查询就是:
@messages = Message.joins(:user).select('messages.*, users.name').order('created_at desc').paginate(:page => params[:page], :per_page => 5)
对于搜索字段,我的用户界面如下:
<%= form_for :message, :url => track_emails_path , :html => {:method => :get} do |f| -%>
<div class="ic-Input-group">
<input class="ic-Input" type="text" id="user_name" name="user[search]" aria-labelledby="user_name_label" placeholder= "Search by name,email, date"/>
<button class='Button'><%= t 'buttons.go', "Go" %></button>
</div>
<% end -%>
我能够在我的参数中获得搜索结果。例如,如果我搜索了,那么我的参数就像:Parameters: {"utf8"=>"✓", "user"=>{"search"=>"sneh"}}
。但我没有得到如何在我的查询中的所有三个字段中应用where where:name,email和created_at。
答案 0 :(得分:3)
请尝试以下操作。
query = params[:search]
@messages = Message.joins(:user).where("user.name LIKE ? OR user.email LIKE ? OR user.created_at LIKE ?" ,"%#{query}%", "%#{query}%","%#{query}%")