2013-04-07 2 views
0

У меня есть страница, которая отображает 3 списка результатов поиска: иллюстрации, романы и теги. Я хочу разрешить пользователю щелкнуть ссылку для каждого из списков, чтобы увидеть сетку эскизов. Я не могу за всю жизнь понять, как передать объекты результатов поиска на новую страницу. Я получаю только строки идентификаторов иллюстраций.Ссылка на другое изображение результатов поиска

Метод поиска main_controller, и то, что я пытаюсь сделать, чтобы show_illustrations:

def search 
    @search_criteria = params[:search] 
    @novels = Novel.search(params[:search]) 
    @illustrations = Illustration.search(params[:search]) 
    @tags = Tag.search(params[:search]) 

    respond_to do |format| 
     format.html #search_results.html.erb 
    end 
    end 

def show_illustrations 
    @illustrations = params[:illustrations] 
end 

Парциальным, который показывает список иллюстраций в результатах поиска. Приложение настаивает на вызов методы шоу из основных, даже если я назначу действие в заявлении link_to к «show_illustrations»:

<% if @illustrations.size() > 0 %> 
     <div class="row-fluid"> 
     <div class="span8"> 
     <h3>Illustrations</h3> 
     </div> 
     <div class="span4"> 
     <%= link_to "View", {:controller => "main", :action => "show_illustrations", :illustrations => @illustrations}, :class => "btn btn-mini"%> 
     </div></div>  
      <div class="search_results well-search-results"> 
       <table class="table table-striped table-condensed"> 
        <% @illustrations.each do |illustration| %> 
         <tr> 
          <td><%= illustration.name %></td> 
          <td><%= link_to "Show", illustration, :class => "btn btn-primary btn-mini", :style => "float:right;" %></td> 
         </tr> 
        <% end %> 
       </table> 
      </div> 
     <% else %> 
      <h3>No Matching Illustrations</h3> 
     <% end %> 

страница, которая должна показать сетку иллюстраций, под названием searched_illustrations.html.erb:

<div class="container"> 
    <div class="well padding:0px;"> 
    <% @illustrations.each_slice(4) do |set| %> 
     <div class="row-fluid"> 
     <% set.each do |illustration| %> 
      <div class="span3"> 
      <div style="text-align:center"><%= link_to image_tag(illustration.image_thumbnail_url), illustration %> 
       <br /> 
       <%= illustration.name %><br /> 
       <%= link_to illustration.novel.name, illustration.novel %> - 
       <%= illustration.novel.edition %> 
       <% if ! illustration.tags.empty? %> 
       <br /> 
       <% illustration.tags.each do |tag| %> 
        <%= tag %> 
       <% end %> 
       <% end %> 
      </div> 
      <br /> 
      </div> 
     <% end %> 
     </div> 
     <br \> 
    <% end %> 
    </div> 
</div> 

routes.rb:

match 'main/show_illustrations' => 'main#show_illustrations', as: :show_illustrations 

ответ

0

Это плохо, но это решение:

В контроллере поиска:

def show_illustrations 
    @arr = params[:illustrations] 
    @illustrations = Array.new 

    @arr.each do |id| 
     illustration = Illustration.find(id) 
     @illustrations << illustration 
    end 

    @illustrations = Kaminari.paginate_array(@illustrations).page(params[:page]).per(20) 
end 
0

Ну это помогло бы много, если вы были более конкретно, о которых поиск драгоценных камней вы используете, но давайте предположим, что ваш используя meta_search. meta_search, и я считаю, что некоторые другие камни поиска возвращают объект класса Search, и вам нужно позвонить по методу .results, чтобы получить результаты поиска.

Его так же, как вы, как вы не можете позвонить @users = User, вам нужно позвонить @users = User.all. В этом случае его @listings = Listing.search(params[:search]).results.all

Смежные вопросы