我正在试图找出为什么我的rails应用程序呈现视图的准系统HTML布局并在之后应用样式,而不是使用已应用的样式和javascript渲染视图。
这是我在视图中加载样式表和javascript文件的代码:
<head>
<meta charset="UTF-8">
<title>Transit by TEMPLATED</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="description" content="" />
<meta name="keywords" content="" />
<!--[if lte IE 8]><script src="js/html5shiv.js"></script><![endif]-->
<script src="assets/jquery.min.js"></script>
<script src="assets/skel.min.js"></script>
<script src="assets/skel-layers.min.js"></script>
<script src="assets/init.js"></script>
<noscript>
<link type="text/css" rel="stylesheet" href="/assets/skel.css" />
<link type="text/css" rel="stylesheet" href="/assets/style.css" />
<link type="text/css" rel="stylesheet" href="/assets/style-xlarge.css" />
</noscript>
</head>
这是我决定渲染视图的控制器:
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
def index
render 'layouts/_test'
end
end
这些是清单文件:
的application.js
//= require init.js
//= require html5shiv.js
//= require_tree .
application.css
/*
*= require skel.css
*= require style.css
*= require_tree .
*= require_self
*/
答案 0 :(得分:2)
浏览器的工作原理是应用样式而不是rails。 Rails唯一的责任是生成和传递HTML,css和js文件。
仅当浏览器下载所有css文件时才会应用样式 - 尝试使用资产管道并仅提供一个css文件,其中包含所有css样式。记住gzipping和缓存这些文件(将小文件传递给客户端,并将其缓存,以便每次呈现页面时都不需要下载它)
答案 1 :(得分:0)
<强>浏览器强>
为了给你一些上下文,你必须记住非常关于Rails的重要内容,以及所有其他基于Web的语言/框架 - 他们所有在浏览器中呈现
虽然我们的浏览器变得非常错综复杂。与5年前相比,事实仍然是他们仍然依靠HTML / CSS来使对象出现在屏幕上。
因此,您的问题并不是关于CSS是否会在HTML之前应用 - 而是Rails是否将正确的文件/代码传递给您的浏览器。
-
Rails将相关数据发送到您的前端的方式与其他每个应用程序相同 - 您通过HTTP发送的请求由Web服务器软件处理(大多数人使用{{ 1}},有些人使用passenger
或apache
) - 这会将您的请求发送给Rails,Rails会对数据库进行调整,最终发回&#34;编译的#34; HTML:
因此,您应该问的问题是 - 我如何将CSS / HTML发送到我的浏览器?这是最有效的方式,还是我不必要地重复我的代码?