【问题标题】:Is it possible to use scalatra's unquoted HTML literal string syntax in sinatra?是否可以在 sinatra 中使用 scalatra 的不带引号的 HTML 文字字符串语法?
【发布时间】:2013-06-17 21:23:26
【问题描述】:

我想在 sinatra 中使用这种风格:

get("/") {
  <html>
    <body>
      <h1>Hello, world!</h1>
      Say <a href="hello-scalate">hello to Scalate</a>.
    </body>
  </html>
}

http://www.scalatra.org/2.2/getting-started/first-project.html#toc_64

但我不清楚是否可以在 get 函数的主体中使用不带引号的 HTML 文字字符串。

【问题讨论】:

  • 如果您在问题正文中引用您所指的部分,将会有很大帮助。照原样,我们将不得不猜测您的确切含义,或者四处走动以查看该链接。另外,该链接失效时,您的问题将毫无价值。
  • 好主意。谢谢,@theTinMan
  • 在 Scalatra(不是 Sinatra)中,您确实可以像这样使用纯“HTML”(实际上是 XML)——不是因为 Scalatra 竭尽全力支持它,而是因为 XML 文字是一回事在斯卡拉。 grahamhackingscala.blogspot.co.uk/2009/11/…

标签: html ruby scala sinatra scalatra


【解决方案1】:

Ruby 和 Sinatra 不支持这种确切的格式,因为这会是语法错误。你必须以某种方式引用包含标记的字符串,否则 Ruby 会抱怨。但是,您只需添加一点 Ruby 代码就可以做到这一点:

require 'sinatra'

get("/") {
  %{
    <html>
      <body>
        <h1>Hello, world!</h1>
        Say <a href="hello-scalate">hello to Scalate</a>.
      </body>
    </html>
  }
}

你也可以这样做:

require 'sinatra'

get("/") {
  return <<EOT
<html>
  <body>
    <h1>Hello, world!</h1>
    Say <a href="hello-scalate">hello to Scalate</a>.
  </body>
</html>
EOT
}

内容必须以一种或另一种方式“字符串化”。

这是我非常喜欢 Sinatra 的原因之一。它是用于 Web 服务的出色原型设计工具。处理程序返回的任何内容都会发送到浏览器。如果不是 HTML,那么您可以使用 content_type 方法和内容的 MIME 类型轻松指定它的类型,然后返回该内容。

【讨论】:

  • 第二个例子看起来像这里的文档。对吗?
  • 是的。这只是将内容复制到字符串中的另一种方式。
猜你喜欢
  • 1970-01-01
  • 2018-09-10
  • 1970-01-01
  • 1970-01-01
  • 2014-09-07
  • 2021-06-06
  • 2021-02-05
  • 2021-11-20
  • 2023-02-01
相关资源
最近更新 更多