如何使用Rails实现这样的数据库搜索?

时间:2011-10-24 19:34:25

标签: ruby-on-rails ruby-on-rails-3.1

我正在使用Ruby on Rails开发我的第一个网站。这个想法是一个营养“搜索引擎”,你在那里搜索食物,然后网络应用程序会带你到一个包含有关食物的营养信息的页面或一个搜索结果页面,如果不存在完全匹配。

到目前为止,我已经创建了营养信息数据库(使用postgresql)并添加了一些测试数据。这是我用来为数据库创建脚手架的命令:

rails generate scaffold Food name:string calories:decimal portion_name:string \
portion:decimal image_url:string description:text

然后我创建了索引页面。这是我用来创建索引的命令:

rails generate controller home index 

我删除了public/index.html并修改了config/routes.rb以包含此行:

root :to => 'home#index'

在此之后,我将搜索表单添加到app/views/home/index.html.erb,如下所示:

<div id="search">
  <h1>How many calories are in... ?</h1>
  <%= form_tag("/search", :method => "get") do %>
    <%= text_field_tag "q", nil, :class => "span6" %>
    <%= submit_tag("Go", :name => nil) %>
 <% end %>

现在,我想连接这个搜索表单,以便,如果与搜索查询或一个匹配匹配完全匹配,则用户将直接路由到显示该食物的信息(来自数据库)的页面。如果没有完全匹配,我希望向用户显示一个结果页面和每个结果的营养页面链接。

如何实现此功能?我曾尝试谷歌搜索有关使用Rails实现搜索的文章,我也看了一个截屏视频,但我找到的资源都没有实现我想要的。

到目前为止,这是项目的GitHub链接:https://github.com/robertseaton/nutrition-project

2 个答案:

答案 0 :(得分:0)

我使用Thinking-Sphinx在Rails中进行搜索 - Sphinx是一个开源搜索服务器。您可以定义搜索在Rails中的工作方式。

答案 1 :(得分:0)

您还可以使用太阳黑子来满足您的搜索需求。这是太阳黑子https://github.com/sunspot/sunspot的github链接。

使用太阳黑子,您可以指定所有物品可以搜索的食物,卡路里等等,并为这些物品赋予不同的重量,这样如果有关键字匹配,请在食物和蛋白质之间说出哪些结果应该显示在顶部。

sunspot wiki在github上有很多资源可以帮助你入门,实现非常直观:)。

谢谢,