0

我有一个 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

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

4

1 回答 1

0

让我感到困惑的问题之一是我认为嵌套路由被过度使用了。我现在找到了解决这个问题的方法。我很想为有相同问题的任何人留下一个直接的答案,但不幸的是,我的解决方案没有回答这个特定的问题,因为我以完全不同的方式解决了这个问题。然而,我后来确实注意到实际上还有其他类似的问题得到了回答。

于 2012-04-09T19:51:14.600 回答