2016-11-18 3 views
-2

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?

+0

Sie müssen die Formatierung beheben. Ihre Frage ist momentan unleserlich. – TankorSmash

+0

Google Ruby Metaprogramming – MikeJRamsey56

+0

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

Antwort

3

Wenn ich Ihre Frage richtig verstehe, können Sie nicht.

Ruby-Code wird auf dem Server ausgeführt.

Page JavaScript wird vom Client (Webbrowser) ausgeführt.

Wenn JavaScript ausgeführt wird, wird es bereits vom Ruby-Interpreter analysiert.

+0

Dann, wie kann ich meine params ändern? – Jutta

+0

<% text_field_tag: Offset, Parameter [: Offset] || 0%> statt 0 Ich brauche 10, nachdem ich auf meinen Paginierungslink geklickt habe? – Jutta