1

私はこのようなルートを持っています:

resources :users do
  resources :projects
end

次のようなルートにアクセスできるようにしたいと思います。

/users/1/projects/1

/projects/1

これは可能ですか?これをどのように設定しますか?私は自分のアプリで、ユーザーが/ users /:id / projects /:idを介して自分のプロジェクトの両方を表示できるようにしたいだけでなく、他のページでも作成されたすべてのプロジェクトを表示したいという問題を抱えています。 、この/ projectsのように、またはプロジェクトとIDのように、この/ projects /:idのように。何かが足りないような気がしますが、ネストされたルートを削除するだけでいいですか?または私は両方を持つことができます。

4

2 に答える 2

2

あなたは両方を持つことができます。resources :projectsあなたのroutes.rbに追加するだけです。次に、ProjectsControllerで次のことを行う必要があります。

def index
  if params[:user_id]
    @projects = User.find(params[:user_id]).projects
  else
    @projects = current_user.projects
  end
end

私はあなたの認証システムcurrent_userがあなたのコントローラーのための方法を提供すると仮定しています(それらのほとんどがそうであるように)

于 2012-08-10T08:09:44.383 に答える
2

あなたのニーズに応じて、あなたは確かに両方の方法を持つことができます。

resources :users do
  resources :projects 
end
resources :projects

/ users /:user_id / projects /:idと/ projects /:idにもURLが表示されます。

プロジェクトコントローラーでparams[:user_id]が存在するかどうかを確認し、必要なアクションを実行できます。

于 2012-08-10T08:10:13.590 に答える