2012-02-20 21 views
0

所以我創造on Rails應用程序,並在我看來紅寶石我的link_to的列表,每一個都是不同的控制檯搜索基於字段內容 - Ruby on Rails的

在我的數據庫表我有一個名爲場安慰。

我想要做的是當用戶點擊一個鏈接例如Playstation 3,它將返回所有列表中列出PlayStation 3的記錄。

我想知道如何去做這件事,我試圖在互聯網上搜索,但沒有發現任何類似的東西。

這是一個項目,我沒有很長的時間來完成。我一直在討論我在視圖中的鏈接以及我將放在games_controller中的內容。

任何幫助將不勝感激。

+0

如果有人解決了您的問題,您應該點擊其答案旁邊的綠色複選標記。這將標誌着他們的答案被「接受」。將問題的標題保留原樣。 – michaelmichael 2012-02-24 21:38:43

回答

2

基本要點是有一個控制器動作,它將返回控制檯過濾遊戲列表。例如,

# GamesController.rb 
def index 
    @games = Game.find_by_console(params[:console]) 
end 

然後你就可以創建這樣一個鏈接任何特定控制檯:

link_to 'XBOX', games_path(:console => 'XBOX')

這將導致GET請求URL /games?console=XBOX

如果」我已經獲得了一套預定義的控制檯,您可以考慮將它們設置爲Consoles模塊中的常量,以避免在任何地方對它們進行硬編碼。

UPDATE:

既然你正試圖實現在同一鏈中搜索和過濾,你需要確保,如果它不存在find_by_console不叫。

# GamesController.rb 
def index 
    @games = Game.search(params[:search]) 
    @games = @games.find_by_console(params[:console]) unless params[:console].blank? 
end 
+0

謝謝卡洛斯。我現在在我的GamesController中有以下內容: @games = Game.paginate(:per_page => 4,:page => params [:page])。search(params [:search])。find_by_console(params [控制檯]) 但我現在得到以下錯誤: 當你沒有想到它時,你有一個零對象! 您可能預期了Array的一個實例。 評估nil時發生錯誤每個 --- 我該怎麼辦才能解決這個問題。感謝你的幫助。 – user1222136 2012-02-21 01:22:01

+0

聽起來像你的搜索方法返回沒有結果,然後你試圖調用它find_by_console。 – 2012-02-21 02:26:09

+0

請記住,如果沒有找到結果,'''find_by_console'''方法將返回'''nil'''。你可以通過在Array.wrap中調用整個表達式來解決這個問題,比如'''Array.wrap(Game.paginate ...)''' – 2012-02-21 03:05:05