我想从 Controller 渲染一个 .js.coffee
View ,其中包含 lib/assets/javascripts
目录中的另一个 js 文件:
#= require doc_ready
为什么 View 由 Controller 渲染而不是静态资源?
因为我想通过绝对 URL 引用该文件,所以不会改变。 Rails 4.0 仅编译带有 embed-dc589fbef3832d9c38a4fbbc4b021f59.js
这样的摘要的资源,即使我对脚本进行了更改,我也想使用相同的 url(并且可能会根据时间使缓存文件过期)。
为什么是绝对网址?
因为我想在另一个网站上外部使用该脚本,并且我向该网站的网站管理员提供的代码不得更改。
为什么我要包含 Assets 中的另一个 js?
- 保持代码干燥
- 需要 simple library模拟 jquery 就绪事件,用于在包含脚本的页面上创建小部件。
我可以通过创建一个渲染 .js.coffee
View 的 Controller 操作来实现这一点,该 View 编译并包含库中其他所需的 js 文件,就像 sprocket 编译 Assets 时所做的那样?
最佳答案
像这样使用重定向:
def show
redirect_to view_context.javascript_path('embed.js.coffee')
end
有一种方法可以渲染整个 js 文件:
def show
render text: Rails.application.assets.find_asset('embed.js.coffee').body
end
关于ruby-on-rails - 从 Controller 渲染 js 时使用 Rails Sprockets 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23565858/