高级搜索表单显示更多表格以获得更多结果

时间:2014-07-12 20:46:28

标签: ruby-on-rails search html-table show

我正在关注Railscasts的高级搜索表单。

这是搜索模型:

 search.rb
 class Search < ActiveRecord::Base
 attr_accessible :keywords

    def segnalazione_animalis
    @segnalazione_animalis ||= find_segnalazione_animalis
    end

   private
   def find_segnalazione_animalis
   segnalazione_animalis = SegnalazioneAnimali.order(:Titolo)
   segnalazione_animalis = segnalazione_animalis.where("Titolo like ?", "%#
                     {keywords}%") if keywords.present?
   segnalazione_animalis = segnalazione_animalis.where("Titolo like ?", "%# 
                                        {keywords}%") if keywords.present?
   segnalazione_animalis = segnalazione_animalis.where("classe like ?", "%#
                                        {keywords1}%") if keywords1.present?
   segnalazione_animalis = segnalazione_animalis.where("specie like ?", "%#
                                        {keywords2}%") if keywords2.present?
   segnalazione_animalis
   end
   end

我有一个searching_controller.rb

class SearchesController < ApplicationController
def new
   @search = Search.new
end
def create
   @search = Search.create!(params[:search])
   redirect_to @search
end
def show
@search = Search.find(params[:id])
end
end

new.html.erb文件是

   <%= form_for @search do |f| %>
   <div class="field">
   <%= f.label :keywords %><br />
   <%= f.text_field :keywords %>
   </div>
   <div class="field">
   <%= f.label :keywords1,"Classe" %><br />
   <%= f.text_field :keywords1 %>
   </div>
   <div class="field">
   <%= f.label :keywords2,"Specie" %><br />
   <%= f.text_field :keywords2 %>
   </div>

    <div class="actions"><%= f.submit "Search" %></div>
   <% end %>

和节目文件:

   <h1>Search Results</h1>
   <%= render @search.segnalazione_animalis %>

我从我的segnalazione_animalis文件夹的索引文件中获取部分渲染:

   _segnalazione_animali.html.erb
        <table class="table1">
        <tr>
        <th>Titolo:</th><br>
        <th>Classe:</th>
        <th>Creato il:</th>
        <th>Ultima Modifica il:</th>
        <th></th>
        </tr>

        <% @search.segnalazione_animalis.each do |segnalazione_animali| %>

        <tr>
        <td><%= segnalazione_animali.Titolo  %>&nbsp;&nbsp;&nbsp;&nbsp;</td>
        <td><%= segnalazione_animali.classe %>
        <td><%= l(segnalazione_animali.created_at, format:"%e %B %Y %k:%M:%S")</td>
        <td><%= l(segnalazione_animali.updated_at, format:"%e %B %Y %k:%M:%S")%>                 
        </td>
        <td><%= link_to 'Mostra', [segnalazione_animali.user, segnalazione_animali] 
                           %></td>
        </tr>
        <% end %>
        </table>

当搜索有效并且有多个结果时,它会显示包含每个结果的更多表格。 示例:它找到两个结果,它显示两个带有两个结果的表。

1 个答案:

答案 0 :(得分:0)

嗯,是的,您使用partial显示结果,而partial部分定义了一个新表,因此如果有多个动物,则会有多个表。渲染集合时,rails会自动渲染EACH对象的相应部分。

如果您只想要一个表,请在show file

中执行此操作
  <h1>Search Results</h1>
        <table class="table1">
        <tr>
        <th>Titolo:</th><br>
        <th>Classe:</th>
        <th>Creato il:</th>
        <th>Ultima Modifica il:</th>
        <th></th>
        </tr>
   <%= render @search.segnalazione_animalis %>
    </table>

而在部分只包括

<tr>
  <td><%= segnalazione_animali.Titolo  %>&nbsp;&nbsp;&nbsp;&nbsp;</td>
  <td><%= segnalazione_animali.classe %>
  <td><%= l(segnalazione_animali.created_at, format:"%e %B %Y %k:%M:%S")</td>
  <td><%= l(segnalazione_animali.updated_at, format:"%e %B %Y %k:%M:%S")%></td>
  td><%= link_to 'Mostra', [segnalazione_animali.user, segnalazione_animali] %></td>
</tr>

铁轨的所有部分魔力。 :)