0

在我的 Rails 应用程序中,我需要脚本根据所提供的控制器和操作而表现出不同的行为。所以在我的 ApplicationController 中,我像这样提供这些:

before_filter :save_action_controller  

def save_action_controller
  @action = action_name
  @controller = controller_name
end

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

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

但是在这种情况下,@controller 和 @action 似乎都为零?但是,我可以从视图和助手中访问它们。另外,如果我真的试图访问“不存在”的变量,我看不出这怎么能不引发异常?

我需要做什么才能从 javascript 访问它?有首选方法吗?

4

1 回答 1

6

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

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

<h1>Products</h1>

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

然后通过javascript访问它

jQuery ->
  alert $('#products').data('url')
于 2012-07-17T14:33:09.683 回答