在我的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访问此内容需要做什么?有没有首选方法?
答案 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')