【问题标题】:Pass instance variable to js Rails将实例变量传递给 js Rails
【发布时间】:2015-01-15 23:28:28
【问题描述】:

在我的搜索控制器中,我有一个实例变量@results。我将它设置为返回一个虚拟结果,'foo'

在我的 search.html.erb 视图中...我设置了 window.results = <%= raw @results.to_json %>

在我的 search.js 资产文件的顶部,我 console.log(results) 并得到 undefined,但是当我在页面加载后进入 devtools 时,结果将填充有 'foo'。 console.log 语句也包含在一个 jquery 就绪函数中。

什么给了?

【问题讨论】:

    标签: javascript jquery ruby-on-rails asset-pipeline


    【解决方案1】:

    Rails 资源是预编译的,因此它们无法访问来自控制器的实例变量。使用script 标记将Javascript 直接嵌入到您的视图中,并像您一样访问@results。您还可以发起对外部 Javascript 文件的调用。

    【讨论】:

    • 这也是我的情况,但我希望在多个视图中拥有相同的 JS(不是无处不在)。当我将我的 JS 放在外部文件中时,ERB 不会评估。有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 2014-10-15
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多