我是Rails的新手,这无疑是一个业余问题......
我正在开发一个简单的应用程序来收集用户帖子,但我的布局并不适用于我的所有页面 - 具体来说,它不适用于带有/ new路径的页面,因为关联的css文件不能找到。我的Rails版本是4.2.5。
以下是我的路线:
root 'home#home.html.erb'
resources :users
resources :posts
我还没有把任何东西放进我的控制器中,但是无论如何它们都是(当然每个都在一个单独的文件中):
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
end
class HomeController < ApplicationController
end
class PostsController < ApplicationController
def index
end
def new
end
end
class UsersController < ApplicationController
def index
end
def new
end
end
我的布局文件是layouts文件夹中的默认application.html.erb文件,它引用了公共文件夹中的样式表,如下所示:
<link rel="stylesheet" type="text/css" href="css/stylesheet.css">
当我的root,用户索引和帖子索引页面渲染时,应用了布局,没问题。但是,当我转到users / new或posts / new页面时,应用程序尝试使用布局进行渲染,但是我收到404错误,找不到样式表。检查网络中的/新页面,我注意到样式表的请求URL为http://localhost:3000/users/css/stylesheet.css,而所有其他(工作)页面的请求URL为http://localhost:3000/css/stylesheet.css。
为什么带有/ new路径的页面在其他地方查找此资源(我在资源文件夹中假定),以及如何对它们进行驯服以便我的所有页面都引用相同的css资源?
非常感谢你。
答案 0 :(得分:2)
您可以专门为app > assets > stylesheets
或者您可以在application.scss中创建部分例如_headerStyle.scss
通过@import "headerStyle";
部分导入部分也是一种干扰代码的好方法。
关于资产管道的好读物 - &gt; http://guides.rubyonrails.org/asset_pipeline.html#precompiling-assets
答案 1 :(得分:1)
我是Rails的新手
欢迎!
#app/views/layouts/application.html.erb
<%= stylesheet_link_tag :stylesheet %>
您还需要将stylesheet.css
移至app/assets/stylesheets/stylesheet.css
您目前有relative path个问题。
当您致电url.com/users
并使用样式表的相对路径时,您基本上会让您的浏览器根据当前目录查找文件(IE {{ 1}})。
Rails使用asset pipeline来存储您的资产;您应该不将它们放在users/css/stylesheets
文件夹中。
如果您将样式表放在/public
文件夹中(其意图去了),Rails将使用asset_path
帮助程序。这允许Rails使用正确的路径(而不是相对路径),这将确保您的样式表始终可用。
顺便说一句,您最好使用以下内容:
app/assets/stylesheets
参考文献: