为什么字符串插值在erb模板中失败?

Und*_*ion 7 html ruby ruby-on-rails erb string-interpolation

我在.erb文件中有以下代码:

<% embed='<a href="http://someurl.com/whatever">#{@webcast.name}</a>'%>

<p id="embedCode">
    <pre>
        <code>
            <%= embed %>
        </code>
    </pre>
</p>
Run Code Online (Sandbox Code Playgroud)

锚标记在屏幕上正确显示为文本而不是呈现为dom元素,但字符串插值失败.html已成功显示为文本,但未评估#{@webcast.name}.如果模板中包含<%= @ webcast.name =>,则成功呈现网络广播名称.

und*_*gor 14

因为''没有插入用单引号分隔的字符串.

将您的代码更改为:

<% embed = "<a href=\"http://someurl.com/whatever\">#{@webcast.name}</a>" %>
Run Code Online (Sandbox Code Playgroud)

或(如果你想避免掩盖双引号字符")

<% embed = %(<a href="http://someurl.com/whatever">#{@webcast.name}</a>) %>
Run Code Online (Sandbox Code Playgroud)

或者只是(感谢Samy Dindane的提示):

<% embed = "<a href='http://someurl.com/whatever'>#{@webcast.name}</a>" %>
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用`'`作为`href`分隔符.我发现这更漂亮.:) (2认同)