我检查了其他类似的问题,没有一个问题相同。用户登录后,我的应用程序会重定向到根路径。应该很简单,但由于某种原因,redirect_to没有返回正确的url。它在开发模式下工作正常。 我正在尝试学习如何设置生产模式。所以我有一个小应用程序只有登录/注销,grah.ddns.net当我执行redirect_to到root_url时,我在浏览器的地址栏中得到以下内容:
" 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
在开发模式中也是如此,它有效。做生产模式的哪一部分我错过了???一半试图在开发模式下运行......谢谢。
答案 0 :(得分:0)
使用redirect_to root_path
代替root_url。它会将您重定向到 root'main #index'
_URL更适合向外部来源显示网址。在您的应用程序中,_PATH工作正常,因为它已链接到您当前的URL。无需重复..
路径将返回'/',其中url将返回完整的url。
答案 1 :(得分:0)
尝试添加
root "main#index"
在route.rb文件的末尾。
答案 2 :(得分:0)
似乎与
config.consider_all_requests_local = false
所有redirect_to语句都必须是完全限定的域名。使用FQDN解决了我的问题。