Ruby on rails 访问CoffeeScript中的Rails变量

Ruby on rails 访问CoffeeScript中的Rails变量,ruby-on-rails,coffeescript,Ruby On Rails,Coffeescript,我想通过我的咖啡脚本使用当前用户的。但是如果我尝试在我的咖啡脚本中使用current\u user,我会在浏览器的控制台中得到未定义的变量current\u user 有没有办法在咖啡脚本中访问它?我想做的事情如下: current_user.updated_at < Date.now().getTime() current_user.updated_于 myvar='' myvarAsObj=JSON.parse(myvar) 和myvarAsObj有什么关系吗 返回 Javascri

我想通过我的咖啡脚本使用当前用户的。但是如果我尝试在我的咖啡脚本中使用
current\u user
,我会在浏览器的控制台中得到未定义的变量current\u user

有没有办法在咖啡脚本中访问它?我想做的事情如下:

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

我需要它在我的Rails应用程序中实现这一点。

咖啡脚本被转换成javascript并在浏览器上运行。您要做的是将当前的_user.updated _at呈现为HTML中的一个节点,然后使用coffee脚本提取该值。

对于原始javascript+erb

<script type="text/javascript">
  var my_foo = <%= some_ruby_expression %>
</script>
然后,您可以将其作为普通javascript对象进行解析和使用。下面的图片展示了我是如何做到的

更新#2

在coffeescript文件中执行此操作

window.onload = ->
  myvar = '<%= raw @page.to_json %>'
  myvarAsObj = JSON.parse(myvar)
  do_something_with myvarAsObj
  return
window.onload=->
myvar=''
myvarAsObj=JSON.parse(myvar)
和myvarAsObj有什么关系吗
返回
Javascript文件是(或多或少)由浏览器执行的静态文件。我不知道您是否在生产中部署过rails应用程序。您将运行命令
bin/rakeassets:precompile
,该命令将生成一个(或多个)大型javascript文件。那么,此时您将如何找到当前用户?根本没有HTTP请求,怎么会有用户呢


因此,要做到这一点,您可以将当前用户写入HTML节点,然后使用javascript(coffeescript)再次读取它(我认为这是最好的方法),或者您可以在视图中打印一个脚本标记,其中包含您希望从用户处获得的内容。

谢谢您的回答,但是我想使用
current\u user
,这是Devage gem提供的助手变量。@Siegy22不工作。但不管怎样,即使要让它发挥作用,我也必须把它写在那一页上。但我想把它写在.coffee.erb文件上。你对此有什么想法吗?谢谢:)@siegy22是的,我看到了你的答案。但我还没有在生产模式下运行应用程序。@Vishal加入聊天:@marmeladze谢谢你的努力,但我需要访问app/assets/javascript文件夹下的咖啡脚本文件中的内容。(即在资产管道中)。感谢您的回复。但是有没有其他的方法呢?你可以试着看看这块宝石。我自己没用过,但偶尔也有人在这里推荐。那是什么代码线我真的不明白你想做什么。。左边是ruby代码,右边是Javascript?!ლ(ಠ益ಠლ)
<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 %>
window.onload = ->
  myvar = '<%= raw @page.to_json %>'
  myvarAsObj = JSON.parse(myvar)
  do_something_with myvarAsObj
  return