【问题标题】:Rails 4 search functionRails 4 搜索功能
【发布时间】:2015-02-23 02:05:46
【问题描述】:

我有这个简单的搜索功能:

class SearchController < ApplicationController
 def index
    if params[:search].blank?
      redirect_to root_path
    else
      @results = Post.search(params[:search])
    end
  end
end

我想实现以下功能,但我正在努力编写代码:

1.如何记录每个输入的搜索词,看看哪些搜索词是搜索最多的。我想过使用“first_or_create”方法...

2.给我这个标题:“彼得保罗玛丽”,我如何将它们拆分并链接到每个术语以搜索搜索功能

请指教。

【问题讨论】:

    标签: ruby-on-rails search ruby-on-rails-4 activerecord


    【解决方案1】:

    1.我认为您可以使用包含每个术语的查询结果的二维数组。

    @maching_posts = Array.new
    @terms = params[:search].split
    
    @terms.each do |term|
      result = Post.where(title: term)
      @maching_post << result
    end
    

    现在,您有了数组“@maching_post”,其中包含每个术语的查询结果。第 [0] 行包含第一项的结果等。

    您可以使用此数组来生成视图。像这样:

    <% @terms.each_with_index do |term, index| %>
      <span>Results of <%= term %></span>
      <% @maching_post[index].each do |post| %>
        <%= post.title %></br>
      <% end %>
    <% end %>
    

    2.要从字符串中获取单个单词,您可以使用 split() 方法。

           "Peter Paul Mary".split 
    

    此方法返回数组 ["Peter", "Paul", "Mary"] 要链接每个术语,请使用

    link_to 'term', controller: :search, action: :index, search: 'term'
    

    你应该循环使用这个方法,比如

    <% "Peter Paul Mary".split.each do |term| %>
      <%= link_to term, controller: :search, action: :index, search: term %>
    <% end %>
    

    【讨论】:

    • 感谢您的 link_to 部分,它运行良好。但是我的第一个问题只是想计算用户输入的搜索词,我不打算对帖子进行排序。例如。如果用户搜索“mary peter”、“mary Paul”、“peter mary”,很明显,mary 排名第一,peter 排名第二。我应该为此创建一个特定的模型吗?请指教。
    • 对不起我的错误。我改进了代码。您无需创建新模型。查询管理是控制器的任务
    猜你喜欢
    • 2017-04-23
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-07
    • 2018-09-04
    相关资源
    最近更新 更多