2016-11-18 17 views
-2

私のページ番号(Numbers 1,2,3,4,5)を使用してparams [:offset]パラメータを変更したいとします。すべての番号を持つ: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; 

} 
.... 

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

これを行うために、私はこのJavaScriptコードを書いた:私は次の10の検索結果が得られるようにオフセットは10で/減少を増やす必要があります

とビューで、私はこのdiv要素を追加しました:

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

の代わりにwが私のparamsハッシュを使用することができることを私のコードでは、注入された文字がruby code%>がテキスト以外の文字でない場合と同じように、テキストは私のページに表示されます。

ページ分割リンクをクリックして変更されたルビコードを挿入するにはどうすればよいですか?

または、ページ設定リンクをクリックすると、私のparamsの値を変更できますか?

+0

フォーマットを修正する必要があります。あなたの質問は今では判りません。 – TankorSmash

+0

Google Ruby Metaprogramming – MikeJRamsey56

+0

Rubyが最初に実行され、その後* JavaScriptが実行され、Rubyが再び実行される第3パスはありません。これを修正する方法は、操作の順序に関して何をしようとしているのか把握することです。 'text_field_tag'は、HTMLのリテラルチャンクを生成します。それは私が知らないJavaScriptでどのように役立つのですか?クライアント側のテンプレートを使用する場合は、[Handlebars](http://handlebarsjs.com)のようなものを試してみてください。 – tadman

答えて

3

私はあなたの質問を正しく理解することはできません。

Rubyコードはサーバーで実行されます。

Page JavaScriptはクライアント(webbrowser)によって実行されます。

時間が経つにつれて、JavaScriptはすでにRubyインタプリタによって解析されています。

+0

次に、パラメータを変更するにはどうすればよいですか? – Jutta

+0

<%text_field_tag:offset、params [:offset] || 0%>の代わりに10が必要です。 – Jutta

関連する問題