渲染视图的骨架,然后应用样式

时间:2015-12-08 18:24:48

标签: ruby-on-rails ruby

我正在试图找出为什么我的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
 */

This is how the view looks when rendered for a second or so

And after that second it gets the styles applied

2 个答案:

答案 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}},有些人使用passengerapache) - 这会将您的请求发送给Rails,Rails会对数据库进行调整,最终发回&#34;编译的#34; HTML:

enter image description here

因此,您应该问的问题是 - 我如何将CSS / HTML发送到我的浏览器?这是最有效的方式,还是我不必要地重复我的代码?