2012-03-05 12 views
0

私は /thisismynameのようなユーザーのためのカスタムURLを構築させるこのルートを持っています。しかし、私は、ログを見たとき、私は好きではない 何かがある...Githubのようなユーザー名のURL

私はこれがhappenningているものです/グレゴリーを打つ時: 1.#公共#グッド 2打/資産をpublic_profileに行きますそして、資産を持つユーザーを検索しようとトークン#ない私は私の制約がこれを避けるだろうと思ったけど、それはそれのように見えるしていません...ここで

class PublicProfileConstraint 
    def self.matches?(request) 
    !['assets', 'admin'].include?(request.session[:token]) 
    end 
end 

get "/:token" => "profiles#public", :as => :public_profile, 
    :constraints => PublicProfileConstraint 

はログです

良い:

Started GET "/gregory" for 127.0.0.1 at 2012-03-05 12:44:43 -0800 
    Processing by ProfilesController#public as HTML 
    Parameters: {"token"=>"gregory"} 
    User Load (0.2ms) SELECT "users".* FROM "users" WHERE 
"users"."id" = ? LIMIT 1 [["id", 1]] 
    User Load (0.3ms) SELECT "users".* FROM "users" WHERE 
"users"."token" = 'gregorymarcilhacy' LIMIT 1 
Rendered profiles/_modal.haml (0.1ms) 
.... 
Rendered profiles/show.haml within layouts/application (154.7ms) 
Completed 200 OK in 431ms (Views: 174.0ms | ActiveRecord: 5.5ms) 

... Redering js files ... 

# I DONT WANT THIS 
Started GET "/assets/" for 127.0.0.1 at 2012-03-05 12:44:45 -0800 
Served asset - 404 Not Found (10ms) 
    Processing by ProfilesController#public as */* 
    Parameters: {"token"=>"assets"} 
    User Load (0.2ms) SELECT "users".* FROM "users" WHERE 
"users"."id" = ? LIMIT 1 [["id", 1]] 
    User Load (0.3ms) SELECT "users".* FROM "users" WHERE 
"users"."token" = 'assets' LIMIT 1 
Redirected to http://localhost:3000/ 
Completed 302 Found in 312ms 

... Rendering images ... 

# AND I DONT WANT THIS 
Started GET "/" for 127.0.0.1 at 2012-03-05 12:44:45 -0800 
    Processing by LandingController#landing as */* 
    User Load (0.3ms) SELECT "users".* FROM "users" WHERE 
"users"."id" = ? LIMIT 1 [["id", 1]] 
Rendered landing/landing.haml within layouts/landing (0.8ms) 
Completed 200 OK in 288ms (Views: 23.5ms | ActiveRecord: 2.2ms) 
+0

あなたはこれらのことが欲しくない理由と、あなたがしようとしていることについて詳しく説明できますか?もしそうすれば、おそらく私は助けることができます。 –

+0

/assetsはアセットパイプラインへのパスであるため、これは必要ありません。そして、私の場合、私のプロファイル#公開アクションに当たって、 'assets'トークンを持つユーザーを見つけようとします。 – Gregory

答えて

1

トークンについてrequest.sessionを検索していますが、リクエストパラメータではなくセッションストアであるため、これは常に失敗します。おそらく、params[:token]に相当する拘束クラスが欲しいでしょう。 request object documentationは、request.path_parameters[:token]にあなたが探している値が含まれている可能性があることを示しています。

+0

うん、うまくいく!ありがとう – Gregory

関連する問題