Devise登录相关页面无法加载Bootstrap样式表返回404错误如何解决
问题原因
你使用了相对路径引用静态资源,资源路径会自动和当前页面的URL路径拼接:
- 普通页面大多在站点根路径下(比如
http://127.0.0.1:3001/),拼接后路径为http://127.0.0.1:3001/landing page template/xxx.css,和你存放静态文件的路径匹配,因此可以正常加载 - Devise相关页面的URL路径前缀为
/users/(比如用户编辑页路径是http://127.0.0.1:3001/users/edit),拼接后路径就变成报错信息里的http://127.0.0.1:3001/users/landing page template/xxx.css,该路径不存在,因此返回404错误。
解决方法
把所有静态资源引用的路径开头添加/,改成根路径绝对路径即可,示例如下:
原有写法:
<link href="landing page template/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet"> <script src="landing page template/vendor/jquery/jquery.min.js"></script>
修改后写法:
<link href="/landing page template/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet"> <script src="/landing page template/vendor/jquery/jquery.min.js"></script>
所有样式、脚本的引用路径都按上述规则修改即可生效。
如果你的静态资源存放在Rails默认的public目录下,以上修改直接生效;如果存放在app/assets目录下,更推荐使用Rails自带的stylesheet_link_tag、javascript_include_tag辅助方法引入资源,从根本上避免路径匹配问题。
内容的提问来源于stack exchange,提问作者Michael Caneff
相关产品推荐
相关产品推荐

