2017-02-25 69 views
0

我檢查了其他類似的問題,但都沒有相同的問題。簡而言之,在用戶登錄後,我的應用程序將重定向到根路徑。應該很簡單,但由於某種原因,redirect_to沒有返回正確的url。它在開發模式下工作正常。 我想了解如何設置生產模式。所以,我有什麼,但登錄/註銷時,grah.ddns.net一個小的應用程序。當我做了redirect_to的到root_url我得到了我的瀏覽器的地址框中輸入以下內容: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 

這是在開發模式,它的工作原理。我在做什麼生產模式的一部分,我錯過了?一半試圖在開發模式下運行... sheesh。

+0

請您分享您的路線文件嗎? –

+0

添加路線文件到問題。 – detrix42

回答

0

使用redirect_to root_path代替ur root_url。它會將您重定向到根'主要#索引'

_URL更適合向外部來源顯示網址。在您的應用程序中,_PATH可以正常工作,因爲它已鏈接到當前網址。無需重複..

該路徑將只返回'/',從而該網址將返回完整的網址。

0

嘗試在route.rb文件末尾添加

root "main#index"

0

似乎與

config.consider_all_requests_local = false 

所有redirect_to的陳述必須是完全合格的域名。使用FQDN解決了我的問題。