/usernameがそのユーザ名のプロファイルにリダイレクトされるプロジェクトを作成しようとしています。これをどうすればいいのですか?ユーザ名ルーティングのルーティング
4
A
答えて
5
ルートは次のようになります。"get /:username", to: "users#profile"
あなたのコントローラのアクションが呼ばれているものにusers#profile
を変更します。
の最後にを入れてください。そうでなければ、はすべてのルートを傍受します。例えば
は、次の手順を実行していない:
get "/:username", to: "users#profile"
get "/foo", to: "pages#bar"
あなたがpages#bar
エンドポイントに到達することはできませんので。
4
ルートで一致しないものはusers#profile
にルーティングされるという前の回答の問題点があります。
また、その問題を解決するために、あなたはこのように、ダイナミックなルータを作成することができます。
class DynamicRouter
def self.load
Rails.application.routes.draw do
User.all.each do |user|
puts "Routing #{user.name}"
get "/#{user.name}", :to => "users#profile", defaults: { id: user.id }
end
end
end
def self.reload
Rails.application.routes_reloader.reload!
end
end
を次にがUserControllerに:
class UsersController < ApplicationController
def profile
@user = User.find(params[:id])
redirect_to not_found_path unless @user
end
end
そして、実際にサーバー起動時のルートを生成します:
Rails.application.routes.draw do
...
get 'not_found' => 'somecontroller#not_found', as: :not_found
DynamicRouter.load
end
最後に、ユーザーの追加/更新時にルートを再ロードする:
class User < ActiveRecord::Base
...
after_save :reload_routes
def reload_routes
DynamicRouter.reload
end
end
希望すると助かります!
関連する問題
- 1. ルーティングのモジュール名スコープ
- 2. Rails固有のルーティング名
- 3. Railsルーティング名の規則
- 4. MVCルーティングとAngelsjsルーティング
- 5. 名前空間とルーティング
- 6. asp.net MVC URLルーティング - サブフォルダ名
- 7. 角度ルーティングとIonicルーティング
- 8. MVCルーティングでのAngularJsルーティング問題
- 9. MVCルーティングとSPAルーティングの違いは?
- 10. Zend Frameworkのホスト名ルーティングとデフォルトルート
- 11. Railsルーティング:リソース/メンバブロック内のアクション名をオーバーライド
- 12. MVC3ルーティングの問題(アトリビュート名を隠す)
- 13. レール3の名前付きコントローラとルーティング
- 14. 角2ルーティングがルーティングされない
- 15. 反応ルータ:クライアント側ルーティングとサーバ側ルーティング
- 16. yii2ルーティング - ルールでルーティングするパラメータ
- 17. ノードExpressJSルーティングでルーティングが発生する
- 18. Firebaseルーティング
- 19. ルーティングAngular2
- 20. ルーティング&モジュール
- 21. ルーティングLaravel
- 22. ユーザー名に基づくExpress JSルーティング
- 23. ルーティングに関するヘルプ(/:名前/:named_param)
- 24. パラメータ名にperiodを付けたMVCルーティング
- 25. リチウムリンクのルーティング
- 26. symfony2のルーティング
- 27. Centosコンフィグレーションのルーティング
- 28. マルチホームマシンのIPルーティング
- 29. VUE.jsでのルーティング
- 30. Extjsルーティングのベストプラクティス
[これは始めるには良い場所です](http://edgeguides.rubyonrails.org/routing.html) – javanut13