私のアプリケーションは、現在、非常に簡単なURLのレイアウトを持っていますURLのレイアウトは
map.resource :account, :controller => "users", :only => [:show, :update, :destroy]
map.resources :workouts do |workout|
workout.resource :chart, :only => [:show]
workout.resources :taggings, :only => [:destroy, :create]
end
は私に、現在のユーザーのための素敵な簡単なURLを与えます。 私は現在、公共の機能を追加しています。一般の人々がアイテムを見る能力です。これらのURLにユーザーのログイン名を付加したいと思います。同時に、パブリックユーザーは1つのトレーニングリソース以外のものにアクセスする必要はありません。私はこれを行うための最善の方法はわかりません。
/teich/workouts/3454
おおよそ
/:user_login/workouts/:id
私はpath_prependくださいです:私はのように見えるURLを羽目になるしたいのですが?現在のユーザーのために、完全なRESTfulコントロールを望んでいる人は、私が今行っているように直接URLの代わりにユーザー名を前もって保持するのがベストプラクティスですか?とにかく私は:before
の権限チェックをしているので、path_prependの余分なルートはすべて心配しないでください。
ありがとうございました。それは私が探している解決策ではありません。私が通常の安らかなルート '/ users /:id /'を持っていれば、to_paramを使ってログインに変更することができます。しかし、ここでのいくつかの違いは、主に/ユーザーが最初に欲しくないことです。 – teich
私はこれをテストしなければなりません(今は時間がありません)、map.named_user_workouts_path ':user_id/workouts /:id'のような名前付きルート 'named_user_workouts_path'を作成できるようです。 ビューでは、<%= link_to "#{@user.login}'s workout"、named_user_workouts_path(@user、@workout)%>のように使用できます。ユーザーモデルが名前付きルートを通過するため、to_paramが呼び出されて 'id'が取得されます。私はこれをある時点で見つけたいと思っています。 – Ben
ありがとうございます。わかりやすくするために、私は標準的なルートを使っています。 :)/users/justは私を殺すつもりはない。 – teich