2016-11-18 50 views
-2

我想使用我的分頁(編號1,2,3,4,5)更改params [:offset]參數。每個編號的:偏移應該由10增加/減少,使我得到下一個10的搜索結果:如何使用Javascript注入更改ruby代碼?

"<% text_field_tag :offset, params[:offset] || 0 %>" 

要做到這一點,我寫這段JavaScript代碼:

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; 

} 
.... 

並在視圖我加了這個div:

"<div id="skip"><br> </div>" 

相反的能夠使用我的PARAMS哈希w ^在代碼中,文本顯示在我的頁面上,就像注入的<%ruby代碼%>不再是ruby代碼,而只是文本而已。

我怎麼能注入是通過點擊一個鏈接分頁改變了一些Ruby代碼?

要不我怎麼會改變我的PARAMS值,否則點擊分頁鏈接?

+0

您需要修復格式。你的問題現在很難理解。 – TankorSmash

+0

Google Ruby Metaprogramming – MikeJRamsey56

+0

Ruby首先運行,然後是* JavaScript,Ruby沒有第三次運行。解決這個問題的方法是根據操作順序弄清楚你正在嘗試做什麼。 'text_field_tag'生成一個文字的HTML塊。如何在JavaScript中有用我不知道。如果您想擁有客戶端模板,請嘗試使用類似[Handlebars](http://handlebarsjs.com)的內容。 – tadman

回答

3

如果我正確理解你的問題,你不能。

Ruby代碼是在服務器中執行。

頁JavaScript是由客戶端(web瀏覽器)執行。

通過時間的JavaScript執行,它已經由Ruby解釋器解析。

+0

那我該如何改變我的params? – Jutta

+0

<%text_field_tag:offset,params [:offset] || 0%>而不是0我點擊我的分頁鏈接後需要10個? – Jutta