我正在组建一个存储库类型的rails 3站点。
我安装了Thinking Sphinx并在我的网站上工作,因为我可以输入localhost:3000/articles?search=test&page=2
这样的网址,它会返回预期的结果。
我是Rails的新手(一般都是网络开发者);我想我可以管理这个模型和控制器方面,但到目前为止的观点让我感到难过。我有一个侧边栏我想用作搜索界面。我最接近的是这个(作为侧边栏部分的一部分呈现):
<% form_tag @search, :method => :get do %>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search"%>
<% end %>
搜索方法在我的文章#index controller中,当我在浏览器指向该页面时测试它(路由为/articles
)时,它按预期工作,但是使用这个奇怪的URL:{{ 1}}。当浏览器首次指向根路径时,没有任何反应。
所以,我认为这些是我需要解决的主要问题:
提前致谢!
解决:
在尝试搜索之前,如何让“搜索”按钮调用索引方法? (我已将localhost:3000/articles?utf8=✓&search=test&commit=Search
替换为@search
)来解决此问题。
使用articles_path
解决,我之前遇到过麻烦,但现在似乎正在运作。
答案 0 :(得分:3)
嘿 这是我切换到solr之前我的网站工作方式的摘录
产品有很多类别,我们告诉sphinx我们要将它们作为方面索引
class Product < ActiveRecord::Base {
has_many :categorisations, :dependent => :destroy
has_many :categories, :through => :categorisations
define_index do
indexes product_name,
indexes description
indexes categories(:name), :as => :category,:facet => true
end
}
结果控制器
class ResultsController < ApplicationController
def index
@facets = Product.facets params[:qt], :conditions => {:category => params[:category}},:page => params[:page], :per_page => 20
@products = @facets.for
end
end
然后在视图中你可以做类似
的事情<% @facets.each do |facet, facet_options| %>
<span><%= facet %></span>
<ul>
<% facet_options.each do |option, count| %>
<li><%= link_to "#{option} (#{count})",
:params => {facet => option, :page => 1} %></li>
<% end %>
</ul>
<% end %>