2017-01-23 11 views
2

現在のユーザーのコーヒースクリプトを使用したいと考えています。 私のコーヒースクリプトでcurrent_userを使用しようとすると、ブラウザのコンソールで未定義の変数current_userが得られます。 コーヒースクリプトでアクセスする方法はありますか?次のように 何私は正確に行いたいことは次のとおりです。coffeeスクリプトでrails変数にアクセスする

current_user.updated_at < Date.now().getTime() 

これはばかげた質問かもしれませんが、とにかく私はそれが私のレールのアプリでそれを実装する必要があります。

ご協力いただければ幸いです。前もって感謝します。 :)

+0

この宝石を見てみることもできます。https://github.com/gazay/gon私は自分で使ったことはありませんが、他の人は時々ここでそれを推薦しています。 – Iceman

+2

そのコードラインとは何ですか? :私は本当にあなたがしたいことを得ることはありません..左側にはルビコードがあり、右側にはJavascriptがありますか? ((ಠ益ლ) – siegy22

答えて

0

コーヒースクリプトはjavascriptに変換され、ブラウザで実行されます。あなたがしたいことは、current_user.updated_atをHTMLのノードにレンダリングし、次にcoffeeスクリプトを使用してその値を抽出することです。生のJavaScript + ERB

<script type="text/javascript"> 
    var my_foo = <%= some_ruby_expression %> 
</script> 

例えばについて

+0

お返事ありがとうございます。他の方法でも可能ですか? – Vishal

1

<script type="text/javascript"> 
    var user_name = "<%= current_user.name %>"; 
</script> 

varキーワードを除くと、これは有効なcoffeescriptコードです。

Btw、それは本当にあなたが求めているものですか? - 私は知らない - ))

UPDATE

current_userはルビー/ active_recordオブジェクトです。あなたはjavascript変数にそれを割り当てるかもしれませんが、あなたがrubyでしたのと同じように使うことはできません。

ただし、以下のスニペットを参考にしてください。私は、レールプロジェクトを作成し、ページモデルを足場にしました。

<p id="notice"><%= notice %></p> 

<p> 
    <strong>Title:</strong> 
    <%= @page.title %> 
</p> 

<p> 
    <strong>Email:</strong> 
    <%= @page.email %> 
</p> 

<p> 
    <strong>Comments:</strong> 
    <%= @page.comments %> 
</p> 

<script type="text/javascript"> 
    var mypage = '<%= raw @page.to_json %>'; // attention to single quotes 
    console.log(mypage); 
</script> 

<%= link_to 'Edit', edit_page_path(@page) %> | 
<%= link_to 'Back', pages_path %> 

これで、通常のjavascriptオブジェクトとして解析して使用できます。下の写真は、私がどのようにしたかを示しています。

enter image description here

UPDATE#2

のCoffeeScriptファイルでそれを行います。

window.onload = -> 
    myvar = '<%= raw @page.to_json %>' 
    myvarAsObj = JSON.parse(myvar) 
    do_something_with myvarAsObj 
    return 
+0

答えてくれてありがとうございますが、私はdevise gemが提供するヘルパーの変数である 'current_user'を使いたいと思います。 – Vishal

+0

@ siegyy22動作しません。しかし、とにかくこの作品を作ることさえ、私はそのページ自体にそれを書かなければなりません。しかし、私はそれを.coffee.erbファイルに書きたいと思っています。あなたはそれについて何か考えていますか?ありがとう:) – Vishal

+0

@ siegy22はい私はあなたの答えを見た。しかし、私は生産モードでアプリを実行していない。 – Vishal

0

Javascriptファイルは、ブラウザによって実行される静的なファイルです(多かれ少なかれ)。あなたがプロダクションでレールアプリを配備したことがあるのか​​どうかはわかりません。 bin/rake assets:precompileコマンドを実行すると、1つ(またはそれ以上)の大規模なjavascriptファイルが生成されます。だから、現時点でどのように現在のユーザーを見つけるのですか? HTTPリクエストはまったくないので、どのようにユーザーがいるのでしょうか?

だからこれを行うには、あなたはHTMLノードに現在のユーザを作成し、その後、(私の意見では最良の方法ある)ジャバスクリプト(CoffeeScriptの)で再びそれを読むか、にスクリプトタグを印刷することができ可能性のいずれかあなたのビューはあなたのユーザーから何を望みますか。

関連する問題