我有一个 2.3.11 Rails 应用程序,我想添加一个全文搜索,以便能够搜索“文章”的内容和标题。我为此目的使用 Thinking-sphinx。我只想能够单击搜索链接到“/advanced_search”(在主页上)并出现搜索表单,然后一旦提交搜索表单,另一个视图 search_results.html.erb 会显示匹配列表文章。
问题:我发现我真的不明白视图是如何实际呈现的。我也不确定我的路由是否正确。我尝试了不同的东西,但由于某种原因,我发现的所有示例都不同。
所以我有一个搜索表单 /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 %>
这是我定义狮身人面像索引的模型:
class Article < ActiveRecord::Base validates_presence_of :name #rest of validation and associations here
define_index 做索引汇总索引 :name end end
这是我的控制器和新的搜索操作 /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 search @articles = Article.search 参数[: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 => get}
map.connect 'advance_search', :controller => "articles, :action => search
假设其他一切都是正确的,我将不胜感激有关如何正确呈现我的视图的任何想法。