Rails + Slim 模板源代码输出

3
我搜索过,但是找不到任何有用的信息。也许是我搜索的不正确,因为这个问题似乎应该在某个地方提到过。我的问题与Slim模板引擎有关。使用Slim时,当我查看浏览器输出的源代码时,由于未嵌套标签而显得不太专业,与HAML不同,后者可以正确地嵌套标签。我不确定是否做错了什么,如果是,请指点正确的方向,因为我非常喜欢Slim,但很遗憾,源代码输出是我无法接受的缺点。下面是我示例代码和Slim以及HAML的输出结果。我还不是很熟悉Rails,不确定是否相关,但是我的开发机器的规格如下:
*Fedora 18 x86_64
*Apache 2.4.4
*Ruby 2.0.0p195
*Rails 3.2.13

The Gem Versions for HAML and Slim:
haml (4.0.3)
haml-rails (0.4)
slim (2.0.0)
slim-rails (2.0.1)

*Apache configuration is set to: RailsEnv development

Slim

app/views/layouts/application.html.slim:

doctype html
html

    head
        title Test Website
        = stylesheet_link_tag "application", :media => "all"
        = javascript_include_tag "application"
        = csrf_meta_tags

    body
        = yield

源代码输出:

<!DOCTYPE html><html><head><title>Test Website</title><link href="/assets/application.css?body=1" media="all" rel="stylesheet" type="text/css" />
<link href="/assets/home.css?body=1" media="all" rel="stylesheet" type="text/css" /><script src="/assets/jquery.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script>
<script src="/assets/home.js?body=1" type="text/javascript"></script>
<script src="/assets/application.js?body=1" type="text/javascript"></script><meta content="authenticity_token" name="csrf-param" />
<meta content="EFA1Dzi1D1DY4GVBlAJ+IIyhm7ZvYch8t5v2a6cj42k=" name="csrf-token" /></head><body><h1>Home#index</h1><p>Find me in app/views/home/index.html.slim</p></body></html>

HAML

app/views/layouts/application.html.haml:

!!!
%html

    %head
        %title Test Website
        = stylesheet_link_tag "application", :media => "all"
        = javascript_include_tag "application"
        = csrf_meta_tags

    %body
        =yield

源代码输出:

<!DOCTYPE html>
<html>
  <head>
    <title>Test Website</title>
    <link href="/assets/application.css?body=1" media="all" rel="stylesheet" type="text/css" />
    <link href="/assets/home.css?body=1" media="all" rel="stylesheet" type="text/css" />
    <script src="/assets/jquery.js?body=1" type="text/javascript"></script>
    <script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script>
    <script src="/assets/home.js?body=1" type="text/javascript"></script>
    <script src="/assets/application.js?body=1" type="text/javascript"></script>
    <meta content="authenticity_token" name="csrf-param" />
    <meta content="RmxaPGwJapEf16Uw8ApQG0CpCHtr4My4aD8UO9w80dY=" name="csrf-token" />
  </head>
  <body>
    <h1>Home#index</h1>
    <p>Find me in app/views/home/index.html.haml</p>
  </body>
</html>
1个回答

2

输出结果并没有问题,Slim只是为了最大化性能而进行了压缩。浏览器不关心它的外观,只要它能工作就可以。

然而,在开发过程中,你可能希望获得更易于阅读的版本以进行调试。

你可以通过配置Slim来产生漂亮的输出:

# Indent html for pretty debugging and do not sort attributes
Slim::Engine.set_default_options :pretty => true, :sort_attrs => false

只需要将它放在config/environments/development.rb文件中,就可以完成设置。

非常感谢您的热烈回应!正是我所期待的! - RPelham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接