2017-08-05 4 views
0

Hier ist der Workflow:RAILS nicht js.erb Rendering

Beginnt mit root_page.js

document.addEventListener('DOMContentLoaded', function() { 
var httpRequest = new XMLHttpRequest(); 
httpRequest.onreadystatechange = function (data) { 
    // code 
}; 
httpRequest.open('GET', '/contents/ajax_rss.js', true); 
httpRequest.send(); 
}) 

Dieser sendet Ajax-Anforderung, die erfolgreich zum Inhalt # geroutet wird ajax_rss

def ajax_rss 
    respond_to do |format| 
    format.js { 
    } 
    end 
end 

Und sollte die folgenden ajax_rss.js.erb

document.getElementById("rss").innerHTML = "HELLO WORLD!"; 
rendern

Hier ist die Serverantwort:

Processing by ContentsController#ajax_rss as JS 
User Load (0.9ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? 
ORDER BY "users"."id" ASC LIMIT ? [["id", 1], ["LIMIT", 1]] 
Rendering contents/ajax_rss.js.erb 
Rendered contents/ajax_rss.js.erb (1.1ms) 
Completed 200 OK in 9ms (Views: 5.0ms | ActiveRecord: 0.9ms) 

Aber der Text entsprechend nicht angezeigt wird. Was vermisse ich? Dies ist mein erster Versuch bei AJAX, wenn nicht von einem Formular oder Button mit Fernbedienung aufgerufen: True.

Alle remote: True-Aufrufe funktionieren wie erwartet.

+0

haben Sie versucht, dies in Browser-Konsole 'document.getElementById ("RSS") innerHTML- = "HALLO WELT!";' Und bestätigen, dass. es funktioniert ? – dp7

+0

Ich tat in der Tat .... – DawgOnKing

Antwort

0

Sie können es mit eval:

request = new XMLHttpRequest(); 
    request.onreadystatechange = function() 
    { 
     if (request.readyState == 4 && request.status == 200) 
     { 
      eval(request.responseText); 
     } 
    }; 
    request.open('GET', '/contents/ajax_rss.js'); 
    request.send(); 
+0

Cheers Vijay. Danke für die Hilfe! – DawgOnKing

Verwandte Themen