首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails 3.1/Sprockets:将控制器变量(或助手)注入javascript资源

Rails 3.1/Sprockets:将控制器变量(或助手)注入javascript资源
EN

Stack Overflow用户
提问于 2011-09-21 15:37:47
回答 1查看 1.7K关注 0票数 2

我要跟你打官司

代码语言:javascript
运行
复制
def new 
  @test_var = 'i want this to show'
end

我所要做的就是将其注入到为该页面调用的javascript中。例如:

代码语言:javascript
运行
复制
#app/assets/javascript/my_model.js.coffee.erb
$ ->
  console.log('<%= @test_var %>')

我猜这不起作用,因为在3.1中,如果我想把控制器变量注入一个JavaScript文件(客户端--不是通过ajax访问的),我应该怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-22 10:36:54

我认为问题在于你对资产管道的想法完全错误...资产是关键字。

这不是一个视图管道。哪些是资产的其他东西?图像& css文件,可以进行预处理,然后按原样提供服务。你的资源的erb/预处理不会在每个页面加载/请求中发生,而是在启动/文件更改时发生,因此在生产中可以静态地优化、缓存和服务资源。

您可能会想出一种使用实时编译来实现它的方法(参见http://guides.rubyonrails.org/asset_pipeline.html的4.2节),但正如文档所说:

此模式使用更多内存,并且性能低于默认模式。不推荐这样做。

不好的答案是“把javascript注入你的视图”,但是把你的javascript从你的rails控制器/视图中解耦出来是个好主意。

更好的答案是有一个包含所有控制器javascripts的资产文件夹,并使用一些“我在哪个页面上?”javascript来确定是否运行代码。

以下是一些解释这一问题的不同方法的答案:

Rails 3.1 asset pipeline: how to load controller-specific scripts?

Using Rails 3.1, where do you put your "page specific" javascript code?

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7496190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档