2011-09-13 11 views
0

私のプロジェクトでは多くのユーザーが利用可能です。各ユーザーには異なるホームページがあります。また、私は既定のホームページを持っています。実際のコードはここにあります。Rails - リダイレクトの問題

requested_url = "/limited/username" #It is constantly changing. 
redirect_to(requested_url || :action => "index", :controller => "demo") 

したがって、http://localhost:3000/demo/index?%2Flimited=usernameのようにページをリダイレクトします。しかし、実際には私はhttp://localhost:3000/limited/usernameのようなリダイレクトされたURLが必要です。

requested_urlが空の場合は、正しくリダイレ​​クトされます。 (http://localhost:3000/demo/index)。しかし、それが空でなければ、間違ってリダイレクトされます。

ここに問題がありますか教えてください。私は何の正確な詳細に関与していないよ

明らか
redirect_to(requested_url || {:action => "index", :controller => "demo"}) 

答えて

6

||は、代わりにこれを試してみてください、=>よりも高い演算子の優先順位を持っていますここでやろうとしていますが、このようなことをすることができます:

before_filter :redirect_to_requested_url, :if => :requested_url_supplied? 

def redirect_to_requested_url 
    redirect_to ... get requested url somehow ... 
end 
+0

デモコントローラは共通コントローラではありません。 "demo/index"と "/ limited/username"はどちらも分離されています。ごめんなさい!。私はifステートメントを使いたくない。私はredirect_to(requested_url || "demo/index")のように自分のコードを少し修正しました。さて、私の問題は解決されました。オペレータの優先順位を覚えていただきありがとうございます。 –

0

を:あなたのリダイレクトコールが

redirect_to((requested_url || :action) => "index", :controller => "demo") 

として解釈されるように