2017-07-07 92 views
4

我正在爲用戶構建一個應用程序來提交「冒險」,並且我希望設置單獨的頁面來顯示城市冒險。我遵循這個建議(Ruby on Rails 4: Display Search Results on Search Results Page)將搜索結果顯示在單獨的頁面上,並且效果很好,但我想進一步研究,並有預先設置的鏈接將用戶路由到城市特定的冒險。我不知道如何從http://localhost:3000/adventures/search?utf8=%E2%9C%93&search=Tokyo得到結果顯示在http://localhost:3000/pages/tokyo上。另外,我對Rails很陌生,這是我的第一個項目。Ruby on Rails:搜索結果的自定義路線

的routes.rb

root 'adventures#index' 
    resources :adventures do 
    collection do 
     get :search 
    end 
    end 

adventures_controller

def search 
    if params[:search] 
     @adventures = Adventure.search(params[:search]).order("created_at DESC") 
    else 
     @adventures = Adventure.all.order("created_at DESC") 
    end 
    end 

回答

1

構建自定義路由pages。像

get "/pages/:city", to: "pages#display_city", as: "display_city" 

,並重定向到與params[:search]

def search 
    if params[:search] 
    #this won't be needed here 
    #@adventures = Adventure.search(params[:search]).order("created_at DESC") 
    redirect_to display_city_path(params[:search]) 
    else 
    @adventures = Adventure.all.order("created_at DESC") 
    end 
end 

有對應路線的controller#actionview

#pages_controller 

def display_city 
    @adventures = Adventure.search(params[:city]).order("created_at DESC") 
    .... 
    #write the required code 
end 

app/views/pages/display_city.html.erb 
    #your code to display the city 
+0

如果您在'search'方法中重定向,則無需執行搜索並設置分配。除非我誤認爲那些人會吃一些時間,然後被拋棄。此外,在重定向結束時丟失''' –

+0

@SimpleLime是的,你正在寫。它可以在'display_city'方法上完成,取而代之的是 – Pavan

+0

@Pavan會根據城市以外的標準重定向刪除當前的搜索能力嗎?如果它只能是一個或另一個,你有什麼建議以不同的方式顯示基於城市參數的冒險列表? – adowns