Revel中的嵌套模板未正确加载

时间:2016-09-07 05:47:14

标签: html go revel

当我调用嵌套模板{{template "partials/mirror.html" .}}时,它会抛出此错误:

results.go:232: Template Execution Error (in App/index.html): html/template:App/index.html: "\"" in attribute name: " class\"quote-component\" id=\"quot"

如果我专门为模板App/index.html创建一个控制器,就像这样:

package controllers

import "github.com/revel/revel"

type Mirror struct {
    *revel.Controller
}

func (m Mirror) Index() revel.Result {
    return m.Render()
}

我仍然得到:

results.go:232: Template Execution Error (in Mirror/index.html): html/template:Mirror/index.html: "\"" in attribute name: " class\"quote-component\" id=\"quot"

以下是mirror.html的内容:

<!-- AUTH STATES -->
<section class="auth-states">

  <!-- FACE DETECTED W/IN RANGE -->
  {{template "partials/faceClose.html" .}}

  <!-- USER DETECTED -->
  {{template "partials/userDetected.html" .}}

  <!-- NON USER DETECTED -->
  {{template "partials/nonUserDetected.html" .}}

  <!-- TIME OUT LOGS USER OUT -->
  {{template "partials/loggingOut.html" .}}

</section>

<div class="clear eyelevel">

  <!-- WEATHER-->
  {{template "partials/weather.html" .}}

  <!-- TIMELY CONTENT: TIMESTAMP AND ALERTS -->
  <div class="timely-content">

    <!-- TIMESTAMP -->
    {{template "partials/timestamp.html" .}}

   <!-- EMOTION -->
   {{template "partials/emotion.html" .}}

  </div>

</div>
<img id="shot-preview"/>

<!-- LOW PRIORITY CONTENT -->
<section class="low-pri-content auth-content">

  <h2 class="logged-in-stamp">
    Here's the scoop, <span id="logged-in-name"></span>:
  </h2>

  {{template "partials/traffic.html" .}}
  {{template "partials/stocks.html" .}}
  {{template "partials/newsFeed.html" .}}


</section>

<div id="video-hidden" aria-hidden="true">
  <video id="cameraPreview" class="cameraPreview"></video>
</div>

<script src="https://code.jquery.com/jquery-2.2.1.js"></script>
<script src="https://cdn.jsdelivr.net/momentjs/2.11.2/moment.min.js"></script>
<script src="/public/js/weather.js"></script>
<script src="/public/js/stock.js"></script>
<script src="/public/js/news.js"></script>
<script src="/public/js/traffic.js"></script>
<script src="/public/js/mirror.js"></script>
<script src="/public/js/authenticate.js"></script>

应用程序的结构遵循Revel建议,项目本身只是使用Revel将this project从Node迁移到Go。

我的问题是:该错误消息是什么意思?它始终加载mirror.html文件的前4行,无论前4行是什么。

1 个答案:

答案 0 :(得分:1)

错误不在mirror.html中,而在于index.html

  

results.go:232:模板执行错误(在 Mirror / index.html 中):html / template:Mirror / index.html:“\”“在属性名称中:”class \“ quote-component \“id = \”quot“

在指定某个元素的'='属性时,您只是省略了等号class,例如您写道:

<span class"quote-component" id="quot">...

请参阅此简单示例以验证:

const templ = `<html><body>
        <span class"quote-component" id="quot">Bad syntax</span>
        </body></html>`

t := template.Must(template.New("").Parse(templ))
err := t.Execute(os.Stdout, nil)
fmt.Println(err)

输出:几乎与你的相同(在Go Playground上试试):

html/template: "\"" in attribute name: " class\"quote-component\" id=\"quot"