2017-02-25 9 views
0

他の同様の質問をチェックしましたが、同じ問題はありません。ユーザーがログインした直後に、私のアプリはルートパスにリダイレクトされます。シンプルなはずですが、なんらかの理由でredirect_toが適切なURLを返さない。開発モードで正常に動作します。 私はプロダクションモードを設定する方法を学びたいと思っています。だから私は、ログイン/ログアウトが、何もない小さなアプリを持っている、grah.ddns.net私はroot_urlにredirect_toを行うと、私は、ブラウザのアドレスボックスに、次を得る:Rails redirect_toがプロダクションで動作しない

http://grah.ddns.net、grah .ddns.net "

redirect_toがこのような文字列を返す理由はわかりません。ここで

は私のコントローラのコードです:

def login 
    user = User.find_by_name(params[:name]) 
    if user.present? 
    @user = user.authenticate(params[:password]) 
    if @user.present? 
     session[:userID] = @user.id 
     session[:userName] = params[:name] 
    end 
    end 
    // responds with "http://grah.ddns.net, grah.ddns.net 
    redirect_to root_url 

end 

def logout 
    session.delete(:userID) if session[:userID].present? 
    session.delete(:userName) if session[:userName].present? 
    // Which should I use root_path or root_url? 
    redirect_to root_path 
end 

、ここでは私のルートファイルです:

Rails.application.routes.draw do 
    root 'main#index' 

    get 'main/index' 

    post 'session/login' 
    get 'session/logout' 

end 

私が取得していますどのような原因となる必要がある、ここで何も見えません。私がリモートでこれに接続していることがわかったのは、

config.consider_all_requests_local = false 

です。これは開発モードでtrueであり、動作します。生産モードをやっているのは何ですか?半分は開発モードで動くように誘惑されました。

+0

経路ファイルを共有してください。 –

+0

ルートファイルを質問に追加します。 – detrix42

答えて

0

ur_rout_urlの代わりにredirect_to root_pathを使用してください。 にリダイレクトされます。ルート 'main#index'

外部URLにURLを表示する方が良いでしょう。あなたのアプリ内で、_PATHは既にあなたの現在のURLにリンクされているのでうまく動作します。繰り返す必要はありません。

パスでは '/'が返され、URLは完全なURLを返します。

0

はroute.rbファイルに最後に

root "main#index"

を追加してください。

0

config.consider_all_requests_local = false 

ですべてredirect_toの文が完全修飾ドメイン名でなければならないようです。 FQDNを使用して私の問題は解決しました。

関連する問題