如何将外部 .js 文件的内容写入 js.haml 文件(Ruby on Rails)
How to write the content of external .js files in a js.haml file (Ruby on Rails)
我在 Rails 框架上使用 Ruby,我喜欢它。
到目前为止,我一直在使用 show.html.haml
作为我的视图,一切正常。我们想添加另一个支持 GET 请求的选项,其中包含 post-fix .js
。为此,我们向控制器添加了另一个名为 show.js.haml
的并行视图。
Rails 的 "magic" 知道将 .html post-fix 请求路由到第一个,将 .js post-fix 请求路由到后者。
问题是当请求被路由到 show.js.haml
视图时,我无法找到一种方法来写入 外部 .js 文件的内容。我得到的只是文本本身(即 <script src="myscripts.js" type="text/javascript"></script>
),而不是文件的实际内容。
我找到了一个解决方案,但肯定不是最优的(性能、稳健性等):将文件下载到服务器并使用以下函数:
!= File.open(Rails.root.join('public' , 'js', 'jquery-1.11.2.min.js'), 'rb').read
这是我发现实际写入 .js 文件内容的唯一方法。
必须有一种Ruby的优雅方式将外部.js文件的内容写入.js.haml文件。
如有任何帮助,我们将不胜感激。
谢谢!
我认为您需要的是 rails 资产管道
http://guides.rubyonrails.org/asset_pipeline.html
我不确定你为什么需要这个以及这对哪种情况是个好主意,但你可以试试这个(未经测试):
# show.js.haml
// some javascript
= render file: Rails.root.join('public' , 'js', 'jquery-1.11.2.min.js')
// or
"#{render file: Rails.root.join('public' , 'js', 'jquery-1.11.2.min.js')}"
当然这只适用于可访问的本地资源,但是嘿,这就是 <script src=
的目的。
编辑
如果需要将文件内容作为字符串存储在变量中,可以使用capture
。对于远程文件,您可以使用 open-uri
,它是 Ruby 标准库的一部分。
# show.js.haml
- content = capture do
- render file: Rails.root.join('public' , 'js', 'jquery-1.11.2.min.js')
# for remote files
- content = open('http://url.to/file.js').read
您可以稍后打印内容:
= content
我在 Rails 框架上使用 Ruby,我喜欢它。
到目前为止,我一直在使用 show.html.haml
作为我的视图,一切正常。我们想添加另一个支持 GET 请求的选项,其中包含 post-fix .js
。为此,我们向控制器添加了另一个名为 show.js.haml
的并行视图。
Rails 的 "magic" 知道将 .html post-fix 请求路由到第一个,将 .js post-fix 请求路由到后者。
问题是当请求被路由到 show.js.haml
视图时,我无法找到一种方法来写入 外部 .js 文件的内容。我得到的只是文本本身(即 <script src="myscripts.js" type="text/javascript"></script>
),而不是文件的实际内容。
我找到了一个解决方案,但肯定不是最优的(性能、稳健性等):将文件下载到服务器并使用以下函数:
!= File.open(Rails.root.join('public' , 'js', 'jquery-1.11.2.min.js'), 'rb').read
这是我发现实际写入 .js 文件内容的唯一方法。
必须有一种Ruby的优雅方式将外部.js文件的内容写入.js.haml文件。
如有任何帮助,我们将不胜感激。 谢谢!
我认为您需要的是 rails 资产管道 http://guides.rubyonrails.org/asset_pipeline.html
我不确定你为什么需要这个以及这对哪种情况是个好主意,但你可以试试这个(未经测试):
# show.js.haml
// some javascript
= render file: Rails.root.join('public' , 'js', 'jquery-1.11.2.min.js')
// or
"#{render file: Rails.root.join('public' , 'js', 'jquery-1.11.2.min.js')}"
当然这只适用于可访问的本地资源,但是嘿,这就是 <script src=
的目的。
编辑
如果需要将文件内容作为字符串存储在变量中,可以使用capture
。对于远程文件,您可以使用 open-uri
,它是 Ruby 标准库的一部分。
# show.js.haml
- content = capture do
- render file: Rails.root.join('public' , 'js', 'jquery-1.11.2.min.js')
# for remote files
- content = open('http://url.to/file.js').read
您可以稍后打印内容:
= content