Ruby on Rails 在带有静态脚本文件的视图中渲染
Posted
技术标签:
【中文标题】Ruby on Rails 在带有静态脚本文件的视图中渲染【英文标题】:Ruby on Rails renderin a view with static script files 【发布时间】:2017-11-01 20:35:25 【问题描述】:在我的 ruby on rails 应用程序中,我控制了 AnimalsController。在这个控制器上,我的动物文件夹中有一个“编辑”方法和一个对应的 edit.html.erb 视图。当我还手动将一些静态 javascript 文件添加到位于 public/assets/js/ 文件夹的页面中时。当我渲染视图时,不是 rails 而是尝试将这些 javascripts 文件加载到相对路径而不是 mydomail.com/assets/js/ 文件夹中。
网址: /animals/:id/编辑
我在 assets/js/ 中有脚本文件 myscript.js
当我向 htt://0.0.0.0:3000/animals/:id/edit 发送请求时
Rails 搜索http://0.0.0.0:3000/animals/:id/edit/assets/js/myscript.js
我希望它在http://0.0.0.0:3000/animals/js/myscript.js 搜索脚本
这是代码在我的edit.html.erb中
<script src="assets/js/myscript.js"></script>
不是:我故意不使用 true %>
有什么建议吗?
谢谢。
【问题讨论】:
【参考方案1】:应该是
<script src="/assets/js/myscript.js"></script>
如果没有开始的“/”,则假定资产路径植根于页面路径。 以“/”开头,它假定资产路径植根于域。
【讨论】:
【参考方案2】:如果您使用the rails helper,它将为您处理此问题。
<%= javascript_include_tag 'myscript' %>
别忘了将此文件添加到资产初始化程序config/initializers/assets.rb
。
【讨论】:
以上是关于Ruby on Rails 在带有静态脚本文件的视图中渲染的主要内容,如果未能解决你的问题,请参考以下文章
墨者 Ruby On Rails漏洞复现第一题(CVE-2018-3760)
Ruby on Rails 6. 使用带有 Ajax 的 Bootstrap 4 工具提示