Ransack,搜索多个列,一个字段,轨道3

Rem*_*amp 10 search ruby-on-rails ransack

我是Ruby on Rails的新手,我正在创建我的第一个网站.我有3列的用户模型:firstname,lastnameemail.我使用ransack制作搜索引擎,我希望有一个搜索字段,它将遍历每一列并显示结果.

我创建了一个user_controller.rb,如下所示:

@q = User.search(params[:q])
@users = @q.result(:distinct => true)
Run Code Online (Sandbox Code Playgroud)

我的User\index.html.erb看起来像这样:

<%= search_form_for @search do |f| %>
  <div class="field">
    <%= f.label :firstname_cont , "Firstname" %>
    <%= f.text_field :firstname_cont %>
    <%= f.label :lastname_cont , "Lastname" %>
    <%= f.text_field :lastname_cont %>
    <%= f.label :email_cont , "Email" %>
    <%= f.text_field :email_cont %>
  </div>
  <div class="actions"><%= f.submit "Search" %></div>
<% end %>
Run Code Online (Sandbox Code Playgroud)

给了我3个搜索字段,但我只想要一个通过名字,姓氏和电子邮件.

编辑1:在测试了一些之后,我发现搜索字段不能同时处理名字和姓氏,也不能处理任何空格.我已经读过可以像这样制作一个helper_method: 用Ransack搜索多个字段

当我得到搜索结果时,我会被扔进我的模型索引等:user/index.我在哪里可以改变这个?

但是在视图中如何使用它没有任何意义.为什么这么辛苦,这就是你所做的:在Controller中这样做 - >在模型中做这个 - >在视图中做这个 - >并且不要忘记修复这样的路线 - >

phr*_*ron 23

首先,在要求尝试通过gem文档搜索一下并用谷歌搜索^ _ ^之前.

第一个引用的是github页面:https://github.com/ernie/ransack

在这里查看Ransack 的演示页面:http://ransack-demo.herokuapp.com/你应该看到第一个字段做你想要的(在lastname和firsname中搜索)并查看源代码页面你应该看到这一行

<input id="q_first_name_or_last_name_cont" name="q[first_name_or_last_name_cont]" size="30" type="text" />
Run Code Online (Sandbox Code Playgroud)

这可以让你对正确的谓词使用有所了解,你也可以在这里找到它们的列表:https://github.com/ernie/ransack/blob/master/lib/ransack/constants.rb(总是在gem中doc on github).

基于此,您可以在视图中执行类似的操作

<%= f.text_field :lastname_or_first_name_or_email_cont, :placeholder => 'full name or email contains' %>
Run Code Online (Sandbox Code Playgroud)

生成"OR条件"查询,您可以再次在演示页面中看到(生成的查询将作为传统SQL查询显示)

希望这可以帮助

干杯

  • 如果我想搜索last_name(字符串)或id(整数)怎么办? (3认同)
  • 嗨Remi,我正面临着在搜索领域搜索多个单词并且目前没有找到任何答案的同一面墙.您可以使用搜索工具构建一个"虚拟列"进行搜索,这里有一个示例https://github.com/ernie/ransack_demo/blob/master/app/models/user.rb.问题的第二部分,结果总是会引发模型索引,因为在控制器的"搜索"操作中,您将呈现"索引"视图.干杯 (2认同)