Ich möchte den Parameter params [: offset] mit meiner Seitennumerierung (Zahlen 1,2,3,4,5) ändern. Mit jeder Anzahl der: Offset um 10/Abnahme erhöhen, so dass ich die nächsten 10 Suchergebnisse erhalten:Wie ändere ich Ruby-Code mit Javascript-Injektionen?
"<% text_field_tag :offset, params[:offset] || 0 %>"
Dazu schrieb ich diesen JavaScript-Code:
Search.js
var zero = 0;
var offset = "<% text_field_tag :offset, params[:offset] || " + zero + " %>";
document.getElementById("skip").innerHTML = offset;
function changeoffset1() {
var a = document.getElementById('first').text;
var b = parseInt(a);
zero = (b - 1) * 10;
var offset = "\<\% text_field_tag :offset, params[:offset] || " + zero + " %>";
document.getElementById("skip").innerHTML = offset;
}
function changeoffset2() {
var c = document.getElementById('second').text;
var d = parseInt(c);
zero = (d - 1) * 10;
var offset = "\<\% text_field_tag :offset, params[:offset] || " + zero + " %>";
document.getElementById("skip").innerHTML = offset;
}
....
Und in der Ansicht hinzugefügt ich dieses div:
"<div id="skip"><br> </div>"
Statt meine params-Hash zu verwenden, in der Lage, w Im Code wird der Text auf meiner Seite so angezeigt, als wäre der injizierte <% Ruby Code%> kein Ruby Code mehr, sondern nur Text.
Wie kann ich etwas Ruby Code injizieren, der durch Klicken auf einen Paginierungslink geändert wird?
Oder wie könnte ich meine Params Wert ändern, sonst klicken Sie auf Paginierung Links?
Sie müssen die Formatierung beheben. Ihre Frage ist momentan unleserlich. – TankorSmash
Google Ruby Metaprogramming – MikeJRamsey56
Ruby läuft zuerst, * dann * JavaScript, und es gibt keinen dritten Durchlauf, wo Ruby wieder läuft. Um dies zu beheben, müssen Sie herausfinden, was Sie in Bezug auf die Reihenfolge der Vorgänge tun möchten. 'text_field_tag' generiert einen Literalabschnitt von HTML. Wie das in deinem JavaScript nützlich ist, weiß ich nicht. Verwenden Sie beispielsweise [Lenker] (http://handlebarsjs.com), wenn Sie clientseitige Vorlagen verwenden möchten. – tadman