【问题标题】:Rails redirect_to not working in productionRails redirect_to 在生产中不起作用
【发布时间】:2017-07-16 10:22:19
【问题描述】:

我检查了其他类似的问题,没有一个有相同的问题。简而言之,用户登录后,我的应用程序将重定向到根路径。应该很简单,但由于某种原因,redirect_to 没有返回正确的 url。它在开发模式下工作正常。 我正在尝试学习如何设置生产模式。所以我有一个小应用程序,只有登录/注销,grah.ddns.net 当我对 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

这在开发模式下是正确的,并且有效。我错过了生产模式的哪一部分???有一半想在开发模式下运行……哎呀。

【问题讨论】:

  • 您能分享您的路线文件吗?
  • 将路由文件添加到问题中。

标签: ruby-on-rails


【解决方案1】:

使用 redirect_to root_path 代替你的 root_url。它会将您重定向到 root 'main#index'

_URL 更适合向外部来源显示 url。在您的应用程序中,_PATH 工作正常,因为它已经链接到您当前的 url。无需重复..

路径将只返回“/”,因此 url 将返回完整的 url。

【讨论】:

    【解决方案2】:

    尝试添加

    root "main#index"

    在 route.rb 文件的末尾。

    【讨论】:

      【解决方案3】:

      似乎与

      config.consider_all_requests_local = false
      

      所有redirect_to 语句都必须是完全限定的域名。使用 FQDN 解决了​​我的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-01
        • 1970-01-01
        • 2014-05-14
        相关资源
        最近更新 更多