2015-11-03 62 views
0

我已經實現了一個簡單的導軌搜索,它正在搜索我的數據庫並顯示結果很好。但是,我不完全瞭解如何將我的搜索查詢路由到新頁面。路由導軌簡單搜索到列表頁面

我已經用護欄腳手架創建我的網站的這一特定部分:

class DogSearchesController < ApplicationController 
    before_action :set_dog_search, only: [:show, :edit, :update, :destroy] 

    # GET /dog_searches 
    # GET /dog_searches.json 
    def index 
    @dog_searches = DogSearch.where(["dog LIKE ? ","%#{params[:search]}%"]) 
    end 

    # GET /dog_searches/1 
    # GET /dog_searches/1.json 
    def show 
    @dog_search = DogSearch.find(params[:city]) 
    end 

index.html.rb

<%= form_tag dog_searches_path, :method => 'get', :class => 'search-form' do %> 
    <i class="fa fa-map-marker"></i> 
    <%= text_field_tag :search, params[:search], :class => 'homesearch', :placeholder => 'Enter search term' %> 
    <%= my_button_to '<i class="fa fa-search"></i>', {}, :class => "fa fa-search" %> 
    <% end %> 

我在dog_searches/listing創建一個頁面,並將此向我​​的路線文件爲get 'dog_searches/listing'

任何幫助,將不勝感激。

回答

0

通常情況下,搜索結果將通過參數進入索引頁面。如果您想要顯示過濾或分頁的dog_searches列表,那麼對所有這些使用索引操作和視圖是一種常見的方法。

但是,這麼說,如果你想渲染列表頁面,你可能需要將表格設置爲頁面

# routes.rb 

resources :dog_searches do 
    get :listing, :on => :collection 
end 

在視圖 - 注意URL變化

<%= form_tag listing_dog_searches_path, :method => 'get', :class => 'search-form' do %> 
    <i class="fa fa-map-marker"></i> 
    <%= text_field_tag :search, params[:search], :class => 'homesearch', :placeholder => 'Enter search term' %> 
    <%= my_button_to '<i class="fa fa-search"></i>', {}, :class => "fa fa-search" %> 
    <% end %> 

然後在控制器中,你會有一個非常類似的索引操作。

def listing 
    @dog_searches = DogSearch.where(["dog LIKE ? ","%#{params[:search]}%"]) 
end 

但是,可以索引處理所有這些嗎?

+0

這很棒,效果很好。如果這是常見做法,我認爲我會考慮使用索引,因爲它沒有意義偏離。當搜索運行時,頁面設計將有所不同,這就是爲什麼我在查看與索引分開的列表。仍在學習使用Rails進行路由的過程,這讓我非常困惑。 – JustDanLee

+0

有些時候,您想要獲得相同結果的不同視圖 - 例如,在索引頁面上使用csv或excel版本很常見。我可以看到其他用途。您可以將兩個頁面視爲列表 - 只要鏈接到另一個頁面,方法是在索引頁面呈現後,通過更改操作並保留其他參數 - 即link_to(params.merge(:action =>:listing))' 。最後,如果需要,您可以從索引頁面重定向到列表頁面。該選項並不常見。相反,你可能想要有一個'search_form'頁面並提交給索引。 – Swards

0

什麼是您的表單所在的目錄,以及您希望將您的搜索路徑queryresult路由到哪個目錄?

默認情況下,rails會使用與控制器操作同名的文件來呈現文件。

因此,如果是做搜索控制器動作是在DogSearchesControllerindex動作,然後視圖文件是dog_searches/index.html.erb

在另一方面,如果你要認爲是dog_searches/listing.html.erb,那麼你可能要創建在DogSearchesController一個listing動作和移動搜索裏面如下:

def listing 
    @dog_searches = DogSearch.where(["dog LIKE ? ","%#{params[:search]}%"]) 
end 

,讓你的搜索表單指向這個動作:

<%= form_tag listing_dog_searches_path, :method => 'get', :class => 'search-form' do %> 
    <i class="fa fa-map-marker"></i> 
    <%= text_field_tag :search, params[:search], :class => 'homesearch', :placeholder => 'Enter search term' %> 
    <%= my_button_to '<i class="fa fa-search"></i>', {}, :class => "fa fa-search" %> 
    <% end %> 

請注意,我假設listing操作的路徑是listing_dog_searches_path

希望這會拋出一些光?