2016-03-20 5 views
0

Ich mache nur einen Schritt, um Ajax zu verwenden, damit ich etwas sehr wichtiges verpasse. Anstatt die Seite zu aktualisieren, möchte ich jetzt Ajax verwenden. Ich teste einen kleinen Code, aber der Browser-Konsole sagt:POST 500 (Interner Serverfehler) mit Ajax, React und Rails

POST 500 (Internal Server Error)

Routen:

post 'to/test' => 'foo#bar' 

.jsx:

test(e){ 
    $.ajax({ 
     url: 'to/test', 
     type: 'POST', 
    }); 
}, 

foo_controller.rb:

def bar 
u = User.last 
u.age = 99 
u.save 
end 

an meiner Schiene Konsole sucht, wurde auf 99. Alles, was das Alter des Benutzers eingestellt ich in meinem Ajax-Lernen verpaßt haben? diese

+0

Wie sieht es mit der Rails-Protokolldatei aus? 500 Fehler ist über internen Serverfehler, zeigen Sie uns. Ich bin mir ziemlich sicher, dass ich die Antwort kenne, es ist "Vorlage fehlt". –

+0

@ Зелёный Es ist auf der Suche nach einer Vorlage. Ich brauche keine Vorlage. Wie kann man das verhindern? Eine Weiterleitung? – Sylar

Antwort

0

ich ziemlich sicher bin, weiß ich die Antwort, es ist ein Template is missing Fehler, fügen Sie einfach head :ok:

def bar 
    u = User.last 
    u.age = 99 
    u.save 
    head :ok 
end 

head(status, options = {})

Gibt eine Antwort, die keine Inhalte (nur Header hat). Das Argument Argument wird als Hash der Headernamen und -werte interpretiert. Mit dieser können Sie einfach eine Antwort zurückgeben, die nur aus signifikanten Headern besteht.

+0

'Kopf: ok' war am besten. Vielen Dank. – Sylar

0

Wechsel:

url: 'to/test'

Um dies:

url: '/to/test'

Ansonsten ist der Ajax-Aufruf wird den Pfad lokal auf dem aktuellen Pfad verwenden, nicht der Pfad lokal für die Domäne.

Edit: Schrott, dass ein 500 Fehler wahrscheinlich etwas anderes bedeutet. Was sagen Ihre Serverprotokolle? Möglicherweise müssen Sie sicherstellen, dass die Aktionsmethode auf js mit einem respond_to-Block reagiert, und Sie müssen eine Vorlagendatei bar.js.erb dazu haben.

Verwandte Themen