从javascript访问实例变量

时间:2012-07-17 14:25:44

标签: 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

在erb-filtered javascript文件中,我有这个:

window.controller = <%= @controller || 'undefined' %>;
window.action = <%= @action || 'undefined' %>;

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

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

1 个答案:

答案 0 :(得分:6)

railscast集有一些关于将数据传递给javascript的信息。

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

<h1>Products</h1>

<div id="products" data-url="<%= products_url %>">
  Loading products...
</div>

然后通过javascript访问它

jQuery ->
  alert $('#products').data('url')