2012-02-20 9 views
0

だから私はRailsアプリケーションにルビーを作成していますし、私の見解では、私はそれぞれが自分のデータベーステーブルで別のコンソールは、フィールドの内容に基づいて検索 - Ruby on Railsに

ているとのlink_toのリストを持っているが、私はと呼ばれるフィールドを持っていますコンソール。

私がしたいのは、ユーザーがリンクをクリックしたときなどです。プレイステーション3は、そのテーブルの列に記載されているプレイステーション3を持つすべてのレコードを返します。

私はこれについてどうやって行くのだろうと思っていました。私はインターネットで検索しようとしましたが、類似のものは見つかりませんでした。

これは、私が完成するのに時間がかからないプロジェクト用です。私は、ビューのリンクとgame_controllerに何を入れるのかについて私が主張していたものを所有していました。

ご協力いただければ幸いです。

+0

誰かがあなたの問題を解決した場合、回答の隣にある緑のチェックマークをクリックする必要があります。それは彼らの答えを「受け入れられた」とマークします。質問のタイトルはそのままの状態にしておきます。 – michaelmichael

答えて

2

基本的な要点は、コンソールでゲームのフィルタリングのリストを返すコントローラアクションを持つことです。例えば、

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

は、その後、あなたのような任意の特定のコンソール用のリンクを作成することができます。

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

あなたならばこれは」URL /games?console=XBOX

GET要求を生じるはずですあらかじめ定義されたコンソールセットを持っているので、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

ありがとうcarlos。 find_by_console(params [:search]):find_by_console(:params [:search]):私は今、私のGamesControllerに次のものを持っています: @games = Game.paginate(:per_page => 4、:page => params [:page]コンソール]) しかし、今私は次のエラーが表示されます: あなたはそれを期待していないときにあなたは無しのオブジェクトがあります! Arrayのインスタンスが想定されている可能性があります。 nil.eachを評価中にエラーが発生しました --- これを修正するにはどうすればよいですか。あなたのすべての協力に感謝します。 – user1222136

+0

検索メソッドのようなサウンドが返されず、find_by_consoleを呼び出そうとしました。 –

+0

'' find_by_console''メソッドは、結果が見つからない場合、 '' 'nil'''を返します。これを解決するには、 '' Array.wrap'''の呼び出しで式全体をラップします。たとえば、 '' Array.wrap(Game.paginate ...) '' ' –

関連する問題