Поиск солнечных пятен работает только с одной страницы?

Я следую инструкциям, упомянутым здесь Rails 3: sunspot solr : добавление возможности поиска для каждой страницы

Однако, похоже, это не работает для меня. Я пытаюсь реализовать функцию поиска, похожую на твиттер, где панель поиска остается вверху на панели навигации, и можно выполнить поиск на любой странице в приложении, и он приведет их на страницу результатов поиска.

Когда я передаю поисковый запрос в браузере, находясь на главной странице сообщений (views/posts/index.html.erb)

http://localhost:3000/post?utf8=%E2%9C%93&search=test&commit=Search

Он возвращает желаемые результаты поиска. Но когда я нахожусь на какой-то другой странице приложения и пытаюсь выполнить поиск, он формирует 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 

Мой контроллер — posts_controller.rb

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

Вид — layouts/application.rb

 <%= 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 %> 

person Donny    schedule 09.04.2013    source источник
comment
Вы можете посмотреть это видео о railscasts — railscasts.com/episodes/278- поиск по солнечному пятну   -  person David    schedule 10.04.2013
comment
Спасибо, Дэвид. Я уже видел это видео, и в нем не упоминается подход к обеспечению доступности поиска по всему сайту.   -  person Donny    schedule 10.04.2013


Ответы (1)


Я наконец понял это. Это необходимо вызывать на каждом контроллере текущей страницы, чтобы перенаправить поисковый пост на его страницу результатов поиска (в данном случае Posts#index)

Любимый контроллер и Контроллер пользователей

 if params[:search]
             search_param = CGI::escapeHTML(params[:search])    

             redirect_to ("/posts?search=#{search_param}&commit=Search") 

            return
       end
person Donny    schedule 11.04.2013