2016-05-14 7 views
0

Ich möchte ein Google-Diagramm mit js.erb rendern. Ich mache eine POST-Anfrage von einem Python-Skript, um einige Parameter an meine Ruby on Rails-App zu senden, die diese Parameter analysiert und sie verwendet, um das Diagramm anzuzeigen, das ich will, aber es zeigt nichts.js.erb-Datei, die ihren Inhalt nicht rendert

params_list = [] 
     params.each_pair {|key, value| 
      params_list.push([key,value]) 
     } 
     p params_list 

     @image = Gchart.pie_3d(:size => '500x300', 
        :title => "Top 5 Results", 
        :legend => ["#{params_list[0][0]} #{params_list[0][1]}%" , 'source-document2 [22%]','source-document3','source-document4','source-document5'], 
        :data => [22, 21, 20, 18, 19]) 

     render :template => "deploy/results.js.erb", :locals => {:image => @image } 

results.js.erb

$("#chart").append("<p> <%= escape_javascript render(partial: 'home/chart', locals: { :image => @image }) %> </p> "); 

aber nichts zeigt sich allerdings auch in der Konsole sagt es

Rendered deploy/results.js.erb

Rails Konsolenausgabe

Started POST "/results.js" for 131.227.46.134 at 2016-05-14 03:18:13 +0100 

Processing by DeployController#results as JS 
    Parameters: {"results"=>"[('source-document01348.txt', 22), ('source-document01389.txt', 21), ('source-document01253.txt', 20), 
('source-document01306.txt', 19), ('source-document01255.txt', 18)]"} 
    Rendered home/_chart.html.erb (0.1ms) 
    Rendered deploy/results.js.erb (1.7ms) 
Completed 200 OK in 9ms (Views: 8.4ms | ActiveRecord: 0.0ms) 

Python-Code für die Zeit nach Anfrage

def send_results(results): 
    url = "http://e786a82b.ngrok.io/results.js" 
    data = { 
     "results": results 
    } 
    data = urllib.urlencode(data) 
    req = urllib2.Request(url, data) 

    # try: 
    response = urllib2.urlopen(url, data) 

Anmerkung: ngrok mit einem Tunnel zu schaffen, wie Python

+0

Können Sie die Ausgabe von der POST anzeigen, die Sie in Ihrem Python-Skript erhalten? Und können Sie die gesamte Ausgabe für die Aktion anzeigen? –

+0

@MichaelGaskill Ich postete die Schienenausgabe, wenn sie die Pfostenanforderung empfängt, kümmerte mich nicht gemachtes home_chart, ich änderte gerade meinen Javascript-Code in js.erb, um teilweise zu übertragen. –

Antwort

0

Statt explizit Bezug auf Ihre teilweise von Dateinamen localhost nicht senden, versuchen Sie dies:

Rails weiß nicht, was Sie versuchen, mit dem Dateinamen zu rendern, es tut es durch Kontext und Format. Wenn Sie die Option :formats angeben, kann Rails Ihre Absicht erkennen.

+0

immer noch nicht funktioniert, in der Konsole sehe ich es gerendert, aber es zeigt nichts. Auch das geht weiter, auch wenn ich nur alert ("test") tippe, es tut nichts. EDIT: Wenn ich versuche, nur eine Taste mit Fernbedienung: True, um diese Aktion auszulösen, funktioniert es. Erraten Sie etwas, dass ich eine Post-Anfrage aus dem Python-Skript mache? –

+0

Rails verwendet den CSRF-Token-Schutz, um Cross-Site-Scripting zum Senden von Posts zu verhindern. Es ist möglich, dass das das Problem verursacht, aber ich hätte erwartet, dass es in diesem Fall einen Fehler anzeigt. –

+0

Ich habe bereits umgangen mit 'skip_before_action: verify_authenticity_token', die Sache ist, dass ich die Parameter bekomme, es ist nur, dass ich aus irgendeinem Grund nicht den js.erb Code ausführen kann, der wirklich frustrierend seit 2 Stunden ist. –

Verwandte Themen