我无法将我的搜索表单和结果视图渲染 - 使用Thinking-sphinx和现有搜索一起使用

时间:2012-04-05 22:32:22

标签: ruby-on-rails views rails-routing

我有一个2.3.11 Rails应用程序,我想添加全文搜索,以便能够搜索“文章”内容和标题。我正在使用Thinking-sphinx来达到这个目的。我只是希望能够点击搜索link_to'/ advanced_search'(在主页上)并显示搜索表单,然后一旦提交了搜索表单,就会有另一个视图search_results.html.erb显示匹配列表文章(S)。

问题:我发现我真的不明白如何实际呈现视图。我也不确定我的路由是否正确。我尝试了不同的东西,但由于某种原因,我发现的所有例子都有所不同。

所以我有一个搜索表单/ controllers / articles_controller / advanced_search:

<% form_tag :controller => 'articles', :action => 'search', :method => 'get' do %>
  <%= text_field_tag :search, params[:search], :id => 'search_field' %>
  <%= submit_tag 'Search', :name => nil %>
<% end %>

我有第二个显示搜索结果的视图/controllers/articles_controller/search_results.html.erb:

<% @articles.each do |article| %>
  <li><%= link_to article.name, :action => 'show', :id => article.id %></li>
  <li><%= article.archived? %></li>
<% end %>

这是我为sphinx定义索引的模型:

类文章&lt;的ActiveRecord :: Base的   validates_presence_of:name   #rest的验证和关联

define_index做     索引摘要     索引:名称   结束  结束

这是我的控制器和新的搜索操作/ controllers / articles_controller:

class ArticlesController < ApplicationController

load_and_authorize_resource

def index     @articles = Article.all

respond_to do |format|
  format.html # index.html.erb
  format.xml  { render :xml => @articles }
  format.json  { render :json => @articles }
end

def搜索     @articles = Article.search params [:search]

respond_to do |format|
  format.html # 
  format.xml  { render :xml => @articles }
  format.json  { render :json => @articles }
end

端 端

在我的routes.rb中我有这一行,这可能不正确,但当我把它取出时,我得到路由错误'No route matches“/ advance_search”with {method =&gt;得到}

map.connect 'advance_search', :controller => "articles, :action => search

我很感激有关如何正确呈现视图的任何想法,假设其他一切都是正确的。

1 个答案:

答案 0 :(得分:0)

让我搞砸的一个问题是嵌套路由是我认为过度使用的事实。我现在找到了解决这个问题的方法。我会喜欢给任何有相同问题的人留下直接的答案,但不幸的是,我的解决方案并没有回答这个问题,因为我采用了完全不同的方式。我后来注意到,其他类似的问题实际上得到了回答。