

app/assets/javascripts/*.js.coffee.erbでrailsの関数や変数にアクセスできません。  
undefined local variable or methodと怒られます。  
具体的にはGET値のparams変数にアクセスしたいのですが、方法はありますか？


CC BY-SA 3.0
2015-05-27T09:13:23.800
10680
2015-05-28T07:36:05.013
9897
question
ruby-on-rails erb
erbを使用したjavascriptでrailsの変数や関数を使用したい


ありません。

erbはeRubyスクリプトを処理するだけですし、  
AssetPipelineは、コンパイル、結合などを経て、圧縮するためのもので  
GETクエリ(params変数)で出力結果のコードが変わるようなものではありません。  
<http://railsdoc.com/asset_pipeline>  
（もし出来てしまったら。プリコンパイルされたものは、どうなってしまうのでしょう？）

そのような処理が必要な場合は、  
そういうviewに、ほんだらだった.js.erbなりを用意して、  
scriptタグからクエリ文字列付けて、呼び出すという方法で実装できます。


CC BY-SA 3.0
2015-05-27T09:38:18.540
10682
2015-05-27T09:38:18.540
8335
10680
answer


Railsからjavascriptに値を渡すということでしたら、viewファイルに下記のように記述すれば出来ます。

[code]

    <%= javascript_tag do %>
        window.hoge = '<%= j @hoge %>';
        window.fuga = '<%= j params[:fuga] || "デフォルト値" %>';
    
        alert(hoge);
        alert(fuga);
    <% end %>
    
[/code]

また、gon という gem を利用することも出来ます。

参考サイト  
<http://ja.asciicasts.com/episodes/324-passing-data-to-javascript>  
<http://qiita.com/mosa_siru/items/e69eee47a183b13cfb62>  
<http://qiita.com/yk-212/items/8d648b83e24a43af17ba>


CC BY-SA 3.0
2015-05-28T07:36:05.013
10714
2015-05-28T07:36:05.013
9529
10680
answer