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】:

应该是

&lt;script src="/assets/js/myscript.js"&gt;&lt;/script&gt;

如果没有开始的“/”,则假定资产路径植根于页面路径。 以“/”开头,它假定资产路径植根于域。

【讨论】:

【参考方案2】:

如果您使用the rails helper,它将为您处理此问题。

 <%= javascript_include_tag 'myscript' %>

别忘了将此文件添加到资产初始化程序config/initializers/assets.rb

【讨论】:

以上是关于Ruby on Rails 在带有静态脚本文件的视图中渲染的主要内容,如果未能解决你的问题,请参考以下文章

Ruby On Rails 3.1 中的尾随日志文件

墨者 Ruby On Rails漏洞复现第一题(CVE-2018-3760)

Ruby on Rails 6. 使用带有 Ajax 的 Bootstrap 4 工具提示

Ruby on rails - 静态方法

带有 jquery datepicker 的 Ruby on rails

墨者靶场 Ruby On Rails漏洞复现第二题(CVE-2019-5418)