从javascript访问实例变量

jfo*_*erg 0 javascript ruby-on-rails ruby-on-rails-3

在我的Rails应用程序中,我需要脚本以不同的方式运行,具体取决于它们所服务的控制器和操作.所以在我的ApplicationController中,我将这些提供为:

before_filter :save_action_controller  

def save_action_controller
  @action = action_name
  @controller = controller_name
end
Run Code Online (Sandbox Code Playgroud)

在一个erb过滤的javascript文件中我有这个:

window.controller = <%= @controller || 'undefined' %>;
window.action = <%= @action || 'undefined' %>;
Run Code Online (Sandbox Code Playgroud)

但似乎@controller和@action在这种情况下都是零?但是,我可以从视图和帮助程序中访问它们.另外,如果我真的试图访问"不存在的"变量,我不会看到如何在不引发异常的情况下实现这一目标?

从javascript访问此内容需要做什么?有首选方法吗?

Dty*_*Dty 6

这个railscast剧集有关于将数据传递给javascript的一些信息.

有几种方法可以做到,但一种不错的方法是使用数据属性(如railscast中所示).您可以使用html定义它,如下所示:

<h1>Products</h1>

<div id="products" data-url="<%= products_url %>">
  Loading products...
</div>
Run Code Online (Sandbox Code Playgroud)

然后通过javascript访问它

jQuery ->
  alert $('#products').data('url')
Run Code Online (Sandbox Code Playgroud)