我有一个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
我很感激有关如何正确呈现视图的任何想法,假设其他一切都是正确的。
答案 0 :(得分:0)
让我搞砸的一个问题是嵌套路由是我认为过度使用的事实。我现在找到了解决这个问题的方法。我会喜欢给任何有相同问题的人留下直接的答案,但不幸的是,我的解决方案并没有回答这个问题,因为我采用了完全不同的方式。我后来注意到,其他类似的问题实际上得到了回答。