2013-04-07 46 views
0

我有一个显示3个搜索结果列表的页面:插图,小说和标签。我想允许用户单击每个列表的链接以查看缩略图网格。我无法理解如何将搜索结果对象传递到新页面。我只是得到插图id的字符串。链接到不同的搜索结果视图

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_searchmeta_search,我相信其他一些搜索宝石,返回类Search的对象,并且您需要调用.results方法来获取搜索结果。

它就像你如何不能拨打@users = User,你必须致电@users = User.all。在这种情况下,它@listings = Listing.search(params[:search]).results.all

相关问题