在ruby on rails上添加名称,电子邮件和日期搜索

时间:2016-01-25 12:32:31

标签: ruby-on-rails-3.2

如何在单个字段中为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。

1 个答案:

答案 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}%")