Ruby on rails 3 太阳黑子solr搜索只能从一页开始工作?
我遵循这里提到的指示 然而,它似乎对我不起作用。我正在尝试实现一个类似twitter的搜索功能,其中搜索栏位于导航栏的顶部,用户可以通过应用程序中的任何页面进行搜索,并将其带到搜索结果页面 当我在帖子主页(views/posts/index.html.erb)的浏览器中传递搜索查询时 它返回所需的搜索结果。但是,当我在应用程序的其他页面中尝试搜索时,它会在地址栏中形成URL,如下面提到的地址栏中所示,并且从不通过视图/布局/application.html.erb页面中声明的顶部导航栏中的搜索框进行搜索Ruby on rails 3 太阳黑子solr搜索只能从一页开始工作?,ruby-on-rails-3,search,sunspot,sunspot-rails,Ruby On Rails 3,Search,Sunspot,Sunspot Rails,我遵循这里提到的指示 然而,它似乎对我不起作用。我正在尝试实现一个类似twitter的搜索功能,其中搜索栏位于导航栏的顶部,用户可以通过应用程序中的任何页面进行搜索,并将其带到搜索结果页面 当我在帖子主页(views/posts/index.html.erb)的浏览器中传递搜索查询时 它返回所需的搜索结果。但是,当我在应用程序的其他页面中尝试搜索时,它会在地址栏中形成URL,如下面提到的地址栏中所示,并且从不通过视图/布局/application.html.erb页面中声明的顶部导航栏中的搜索框
http://localhost:3000/users/1/following?utf8=%E2%9C%93&search=test&commit=Search
http://localhost:3000/posts/1/favorite?utf8=%E2%9C%93&search=test&commit=Search
详情如下:-
我的模型
post.rb
searchable do
text :title, :tag_list
end
def index
if params[:search]
@search = Post.search do
fulltext params[:search]
paginate :page => params[:page], :per_page => 5
end
@posts = @search.results
else
@posts = @posts.plusminus_tally({:order => "vote_count ASC"}).page(params[:page]).per(6)
end
respond_to do |format|
format.html
format.json { render json: @posts}
end
end
<%= form_tag posts_path, :method => :get do %>
<div class="input-append">
<%= text_field_tag :search, params[:search] , :class => "span2 search-query", :style => 'width:200px' %>
<%= submit_tag "Search", :post => nil , :class => "btn" %>
</div>
<% end %>
我的控制器-发布\u Controller.rb
searchable do
text :title, :tag_list
end
def index
if params[:search]
@search = Post.search do
fulltext params[:search]
paginate :page => params[:page], :per_page => 5
end
@posts = @search.results
else
@posts = @posts.plusminus_tally({:order => "vote_count ASC"}).page(params[:page]).per(6)
end
respond_to do |format|
format.html
format.json { render json: @posts}
end
end
<%= form_tag posts_path, :method => :get do %>
<div class="input-append">
<%= text_field_tag :search, params[:search] , :class => "span2 search-query", :style => 'width:200px' %>
<%= submit_tag "Search", :post => nil , :class => "btn" %>
</div>
<% end %>
查看-布局/应用程序.rb
searchable do
text :title, :tag_list
end
def index
if params[:search]
@search = Post.search do
fulltext params[:search]
paginate :page => params[:page], :per_page => 5
end
@posts = @search.results
else
@posts = @posts.plusminus_tally({:order => "vote_count ASC"}).page(params[:page]).per(6)
end
respond_to do |format|
format.html
format.json { render json: @posts}
end
end
<%= form_tag posts_path, :method => :get do %>
<div class="input-append">
<%= text_field_tag :search, params[:search] , :class => "span2 search-query", :style => 'width:200px' %>
<%= submit_tag "Search", :post => nil , :class => "btn" %>
</div>
<% end %>
:get do%>
“span2搜索查询”,:style=>'宽度:200px'>
无,:类=>“btn”%>
我终于明白了这一点。这需要在当前页面的每个控制器上调用,以将搜索帖子重定向到其搜索结果页面(在本例中为Posts#index)
喜爱的控制器和用户控制器
if params[:search]
search_param = CGI::escapeHTML(params[:search])
redirect_to ("/posts?search=#{search_param}&commit=Search")
return
end
你可能想看看这个railscasts视频-谢谢David。我以前看过这段视频,它没有提到让整个网站都可以访问搜索的方法。