2016-12-11 1 views
0

Ich baue eine Rails 5 Web App. Alles funktioniert großartig in meiner Entwicklungsumgebung für lokale Hosts. Ich habe ein Digital Ocean Droplet (mit Ubuntu 14.04, nginx/puma und mySql). Wie in der normalen Sequenz, nachdem ich mich angemeldet habe, leite ich zum root_path um. In meiner lokalen Host-Umgebung funktioniert das wie erwartet, aber auf dem Remote-Host (noch in der Entwicklungsumgebung) gibt die Funktion redirect_to sowohl die URL als auch den Pfad an.Ruby on Rails 5: redirect_to geben URL und Pfad

hier ist die Anmeldungs ​​Controller-Code:

class SessionController < ApplicationController 
    def login 
    user = User.find_by_uname params[:uname] 
    if user.present? 
     @user = user.authenticate(params[:password]) 
     if @user.present? 
     puts "@user present" 
     session[:userid] = @user.id 
     session[:uname] = @user.uname 
     @modal = 'login' 
     redirect_to root_path 
     else 
     puts "@user did not authenticate -- wrong password" 
     end 
    else 
     puts "#{params[:uname]} not in database." 
     render partial: 'utility/loginfailure', as: :js 
    end 
    end 
end 

im Protokoll/development.log Datei, die ich sehe:

-http://ruby.morgotha.net,

ruby.morgotha.net/ Weitergeleitet

Davon scheint es von der Redirect-Methode zu kommen, aber es funktioniert gut auf localhost dev.

Ich bin mir nicht sicher, wie ich das Problem beheben kann. Also, wenn jemand bereit ist, mich darin zu leiten, etwas tiefer zu graben, würde ich es sicher schätzen.

Bearbeiten Ich habe den Session-Controller geändert, um die Rückgabeanweisung nicht zu benötigen. Das Problem ist immer noch passiert. root_path wird nur in "/" aufgelöst.

+1

Ich denke, in Ihrem 'apache' /' nginx' haben Sie das Projekt root mit dieser URL 'ruby.morgotha.net' konfiguriert. Daher dient es als Root-Pfad. Und wenn Sie umleiten, dann sollte es keine 'Return'-Anweisung geben. – Emu

+0

Als ich diese Frage posten wollte, habe ich nach der Weiterleitung die Rückmeldung berücksichtigt. Ich nahm es heraus und versuchte es erneut. Es wurde fehlerhaft angezeigt, dass ich mehrere Renderings hatte. Aber vielleicht dein Recht. Ich werde sehen, ob ich den Controller neu schreiben kann, so dass eine Rückkehr nicht benötigt wird. – detrix42

Antwort

1

Die Antwort endet mit einer falsch konfigurierten Nginx-Konfiguration. das ist, was ich für mein Stammverzeichnis

location/{ 
    proxy_headers_hash_max_size 768; 
    proxy_headers_hash_bucket_size 128; 
    include proxy_params; 
    proxy_redirect off; <---- this line is the problem 
    proxy_pass http://grah; 
    } 

und die Linie mit hatte ‚proxy_redirect aus;‘ ist das Problem. Entfernen Sie diese Zeile, redirect_to funktioniert jetzt wie erwartet.