首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 4搜索函数

Rails 4搜索函数
EN

Stack Overflow用户
提问于 2014-12-25 16:43:26
回答 1查看 383关注 0票数 1

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

代码语言:javascript
复制
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.假设我有这样的标题:"Peter Paul Mary",我如何拆分它们并link_to每个术语来搜索功能

请给我建议。

EN

回答 1

Stack Overflow用户

发布于 2014-12-25 19:38:11

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

代码语言:javascript
复制
@maching_posts = Array.new
@terms = params[:search].split

@terms.each do |term|
  result = Post.where(title: term)
  @maching_post << result
end

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

您可以使用此数组来生成视图。如下所示:

代码语言:javascript
复制
<% @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()方法。

代码语言:javascript
复制
       "Peter Paul Mary".split 

此方法返回数组"Peter","Paul","Mary“以链接每个术语,使用

代码语言:javascript
复制
link_to 'term', controller: :search, action: :index, search: 'term'

应该在循环中使用此方法,如下所示

代码语言:javascript
复制
<% "Peter Paul Mary".split.each do |term| %>
  <%= link_to term, controller: :search, action: :index, search: term %>
<% end %>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27645635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档