12

我有一个看起来像这样的属性:

 data-text = "I won ### by playing..."

其中### 应该是我在@credits 中的一个值。

我应该怎么把它放在那里?

我在尝试这样做时遇到了同样的麻烦:

data-url = <%= request.scheme %> + "//" + <%= request.port %> 

在这种情况下,我不知道如何放置应该围绕整个方案+端口的“”。

谢谢

4

4 回答 4

15
data-text = "I won #{@credits} by playing..."

您可以对其他字符串应用相同的原则,如下所示:

data-url = "#{request.scheme}//#{request.port}" 
于 2013-06-21T15:33:03.100 回答
14

当你有一个 ERB 文件时,"它只与 Ruby 内部的<% %>标签交互。在他们之外,它被 Ruby 忽略。

<html>
  <tag data-text = "I won <%= @credits %> by playing..." 
       data-url = "<%= request.scheme %>//<%= request.port %>"></tag>
</html>

根据您对这些变量的值,将产生:

<html>
  <tag data-text = "I won 42 by playing..."
        data-url = "example//3000"></tag>
</html>
于 2013-06-21T15:52:31.247 回答
2

我知道查尔斯的解决方案有效,因为我以前使用过,而路易斯的解决方案可能也有效,尽管我自己以前没有使用过这种风格。

然而,有一个更清洁的解决方案,而不是难看的硬编码 html 代码。它们是标签助手和链接助手。

看看它们在处理数据属性时有多干净:

link_to "homepage", root_path, data: { text: "I won #{@credit}" }

content_tag "div", data: {url: "#{request.scheme}//#{request.port}"}
于 2013-06-21T16:13:01.833 回答
1

tag.attributes (Rails 7+)

从 Rails 7 开始,有一个新的方便的帮助器 tag.attributes允许生成 HTML 标记属性,如下所示:

<html>
<body>
  <tag
    <%= tag.attributes(
      data: {
        text: "I won #{@credits} by playing...",
        url: "#{request.scheme}//#{request.port}"
      }
    ) %>
  >
  </tag>
</body>
</html>

更多示例可以在这里找到。

资料来源:

于 2021-04-15T18:52:36.477 回答