在 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}%")
如何在姓名、电子邮件和 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}%")