2012-03-09 12 views
3

私は、has_many個のプロジェクトを持つUserモデルを持っています。プロジェクトモデルはUserモデルに属します。私は現在、projects_controller.rbインデックスアクションを使用して、すべてのユーザー(Project.all)にわたって作成されたすべてのプロジェクトを表示しています。Rails 3.1 - 同じモデルの複数のインデックスアクションをどのように整理するのですか?

別のページでは、特定のユーザーに属するすべてのプロジェクトを表示する方法もあります(ページに移動して、特定のユーザーに属するすべてのプロジェクトを表示できるようにする)。

私は難易度、使用するコントローラ/アクション/ビューを考え出すとどのように私はすでにプロジェクトのすべてを表示する目的のためにprojects_controllerのためのindexアクションを使用していますので、ルートを設定する方法を持っています。誰か提案はありますか?

答えて

3
あなたが行うことができ

/ユーザー/正しいと思わProject.find(params[:user_id])

を取得する必要がありますojectsは、ユーザのコントローラプロジェクトアクションにマップされます。このルートは、カスタムメンバーアクションでなければならないでしょう

resources :users do 
    member do 
    get 'projects' 
    end 
end 
+0

これは最も単純な解決策のようです。しかし、大きな回答の多く。ありがとう! – kcurtin

2

ではなく、異なるページのリスティングを持つことになります。異なる基準、すなわちフィルタに基づいて同じインデックスページを使用する。

URL

match ":filter/projects", :to => "projects#index" 

あなたはUser#showページ上の特定のユーザーに属するプロジェクトを表示する方法について

case params[:filter] 
when "all" 
    @projects = Project.all 
when "user" 
    @projects = current_user.projects 
when "batch" 
    # .. 
else 
    # .. 
end 
0

のようなコントローラ何か内部の?

class UsersController < ApplicationController 

    def show 
    @user = User.find(params[:id]) 
    end 

    # rest of class omitted... 

次にあなたが@user.projectsを呼び出すことにより、ショーのページのためのビューでユーザーに属するプロジェクトにアクセスすることができます。おそらく、このような

何か。

0

次のことを行う必要がありusers下に巣projectsのようなコード/パスを働い取得する:あなたがroutes.rbであなたのリソースの行を変更する必要があるので、任意の追加のコーディングなし/users/1/projects

resources :users, :shallow => true do 
    resources :projects 
end 

、その後プロジェクト#ショーの作用の下で{:} ID/PRの代わりにProject.find(params[:id])のあなたはのは

+0

これは、私が使用している/ projectsルートをすべてのプロジェクトを表示するために有効にしますか? – kcurtin

+0

いいえ、これはありません。 – user973254

関連する問題