Ошибка ссылки на индексной странице с картами Twitter EJS - PullRequest
0 голосов
/ 21 мая 2018

У меня есть следующий код в моем файле header.ejs для моей карты Twitter.

<head>
...
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@DrDenverHBubble">
<meta name="twitter:creator" content="@DrDenverHBubble">
<meta name="twitter:title" content="<%= blog.title %>"></meta>
<meta name="twitter:image" content="<%= blog.image %>"></meta>
</head>
...

На моей странице show.ejs моя веб-страница отображается правильно, а карта Twitter также правильно отображается в Twitter.

Однако на моей странице index.ejs я получаю следующую ошибку с кодом ниже

ReferenceError: /home/ubuntu/workspace/drdenver/views/blogs/index.ejs:1
 >> 1| <% include ../partials/header %>
    2|   
    3| 
    4| 

/home/ubuntu/workspace/drdenver/views/partials/header.ejs:16
    14| <meta name="twitter:site" content="@DrDenverHBubble">
    15| <meta name="twitter:creator" content="@DrDenverHBubble">
 >> 16| <meta name="twitter:title" content="<%= blog.title %>"></meta>
    17| <meta name="twitter:image" content="<%= blog.image %>"></meta>
    18|     </head>
    19|     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

blog is not defined

Вот код index.ejs

<% include ../partials/header %>



<div id="blog-index" class="container">
<div class="row" style="display: flex; flex-wrap:wrap;">
    <div class="col-lg-12">
      <% if(noMatch !== null) { %>
      <h4> <%= noMatch %> </h4>
    <% } %>
  </div>
  <% blogs.forEach(function(blog){ %>
      <div class="col-lg-12">
        <div class="ui medium rounded items">
        <div class="item">
          <div class="image">
            <img src="<%= blog.image %>">
          </div>
        <div class="content">
          <a class="header" href="/blogs/<%= blog._id %>"><%=blog.title%></a>
          <div class="meta">
          <span><%= blog.created.toDateString() %></span>
          </div>

          <div class="extra">
            <% if(blog.body && blog.body.length > 0) { %>
            <p><%- blog.body.substring(0, 120) %> ... </p>
            <% } %>
            <a href="/blogs/<%= blog._id %>">Read More</a>
          </div>
      </div>

    </div>

      </div>
    </div>
  <% }) %>
</div>
...

IЯ новый кодер, но я понимаю, что я не передаю что-либо в переменную blog, которая вызывает мою ошибку.Мое решение состояло в том, чтобы на странице показа удалить <% include ../partials/header%> и вставить код заголовка с кодом карты Twitter, а на странице header.ejs удалить код карты Twitter.Есть ли более СУХОЙ способ кодирования этого?

Спасибо

1 Ответ

0 голосов
/ 26 мая 2018

Ваша проблема в том, что вы включаете файл header.ejs, которому нужны данные блога.Но вы не передаете в него данные блога.Измените строку включения на следующую

<%- include('../partials/header', {blog: blog}); %>
...