![](/img/trans.png)
[英]Ruby On Rails: how can I render a partial inside a loop using js.haml?
[英]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.