如何停止输出我自己的html源代码?

时间:2015-04-25 21:16:19

标签: ruby-on-rails devise haml

这可能是我见过的那个狡猾的错误。

我目前正在Ruby on Rails上构建一个供个人使用的应用程序,距离完成还有很长的路要走。 主要布局如下:

!!!
%html.uk-height-1-1
%head
    = render 'layouts/head'
%body.uk-height-1-1.uk-width-1-1
    = if user_signed_in?
        .alerts
            = render 'layouts/alerts'
        .navbar
            = render 'layouts/navbar'
    .uk-container.uk-height-1-1
        = yield
    = if user_signed_in?
        .footer
            = render 'layouts/footer'

警报和页脚部分仍为空,头部分主要是默认代码轨道生成(减去turbolinks),导航栏部分是导航栏。 我在Application Controller上做的唯一更改是添加before_action :authenticate_user!,因此只有登录的用户才能看到主站点。

但是当我运行我的服务器时,出现了以下内容:

The site rendered on Chrome

它将自己的html源代码输出为纯文本!
并且这样做了两次:首先,在导航栏部分之后,最后在页脚部分之后 我从来没有遇到任何与此有关的事情,任何试图找到这个错误来源的尝试都是无用的 我怎么能阻止这种情况,或者至少找到这种疯狂的原因?

1 个答案:

答案 0 :(得分:1)

= if替换为- if

=开头的行也会将if语句的返回值附加到视图,这是一个非HTML安全字符串。

-开头的行只是作为Ruby代码计算而不向视图添加任何内容。