在 rails 的 ruby 中添加对姓名、电子邮件和日期的搜索

Add search for name, email and date in ruby on rails

如何在姓名、电子邮件和 created_at 的单个字段中添加搜索。

没有搜索我的查询是:

@messages = Message.joins(:user).select('messages.*, users.name').order('created_at desc').paginate(:page => params[:page], :per_page => 5)

对于搜索字段,我的 UI 是:

  <%= 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 -%>

我可以在我的参数中得到搜索结果。例如,如果我搜索 sneh,那么我的参数就像:Parameters: {"utf8"=>"✓", "user"=>{"search"=>"sneh"}}。但是我不知道如何在查询中对所有三个字段应用 where 条件:姓名、电子邮件和 created_at.

试试下面的方法。

query = params[:search]
@messages = Message.joins(:user).where("user.name LIKE ? OR user.email LIKE ? OR user.created_at LIKE ?" ,"%#{query}%", "%#{query}%","%#{query}%")