繁体   English   中英

如何将外部.js文件的内容写入js.haml文件(Ruby on Rails)

[英]How to write the content of external .js files in a js.haml file (Ruby on Rails)

我正在使用Ruby on Rails框架,我喜欢它。

到目前为止,我一直使用show.html.haml进行查看,并且一切正常。 我们想要添加另一种支持GET请求的选项,该选项包含.js 为此,我们向控制器添加了另一个名为show.js.haml并行视图。 Rails的“魔力”知道将.html后缀请求路由到第一个,并将.js后缀请求路由到后一个。

问题是当请求路由到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文件。

任何帮助将不胜感激。 谢谢!

我不确定为什么需要这个,以及在哪种情况下是个好主意,但是您可以尝试一下(未测试):

# 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 stdlib的一部分。

# 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资产管道http://guides.rubyonrails.org/asset_pipeline.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM