2012-02-27 4 views
1

[OK]をので、私は基本的には...しかし、私は部分的html.erbへの部分的なjqueryのから変数を渡す必要があります。..jquery varを.js.erbファイル内のruby/railsインスタンス変数に渡すことはできますか?

を部分的html.erbを呼んでいるjs.erb部分を呼び出しています:

$(document).ready(function(){ 
    $('#aidmodel_brand').change(function() { 
    $("select option:selected").each(function() { 
     var brand = ($(this).text()); 
     $('#modeler').html('<%= escape_javascript(render(:partial => "shared/model", :brand => @brand)) %>'); 
    }); 
    }); 
}); 

インスタンス変数@brandにvarブランドを割り当てて、ドロップメニューから選択したオプションをレールの部分に渡して、次のドロップダウンメニューを生成できるようにします。

ありがとうございます!

答えて

0

このようにすることができない理由は、jbuilderのJavaScriptがの後に実行され、の後にルビが実行されます(サーバー上)。

だから、この -

<%= escape_javascript(render(:partial => "shared/model", :brand => @brand)) %> 

では、サーバー上で実行し、そして得られたJSはずっと後に、次のJavaScriptが実行され、クライアントに渡されます。今

function() { 
    $("select option:selected").each(function() { 
     var brand = ($(this).text()); 
     ... 

要件を達成するために、あなたはRubyのコード内のすべてのbrandパーシャルをレンダリングして、JSが選んをやらせることができます。選択: - 何かのように

$('#modeler').html(<%= escape_javascript(Brand.all.each{|b| render(:partial => "shared/model", :brand => b)}.join('')) %>) 

$(document).ready(function(){ 
    $('#aidmodel_brand').change(function() { 
    $("select option:selected").each(function() { 
     var brand = ($(this).text()); 
     var brand_finder = "." + brand 
     var brand_block = $('#modeler').find(brand_finder) 
     brand_block.show() 
    }); 
    }); 
}); 

そして「共有/モデル」の中に、あなたはブランドがオプションでテキストと同じであるCSSクラス名をブロック与えることができます。

+0

ありがとうございます。今日仕事を終えたら、これを試してみる – Abram

関連する問題