ERB字符串插值生成错误的HTML语法

时间:2018-10-31 10:57:02

标签: ruby-on-rails ruby

我在视图中有以下几行:

<%
  if current_user.is_fav?(a)
    cls = "product fav"
  else
    cls = "product"
  end
%>

及以后

<div class=<%= cls %> >

这将产生:

<div class="product" fav>

编辑:正如答案所说,它没有产生此结果,是浏览器“检查”向我显示了它。

我可以解决它,但是上面的代码为什么不起作用?

2 个答案:

答案 0 :(得分:4)

  

这将产生:

<div class="product" fav>

不,不是。它产生<div class=product fav>。您看到的(通过诸如“检查元素”之类的东西,对吗?)是浏览器试图将损坏的标记解释为尽可能接近html规范。

如其他答案中所述,您应该做的是这样的:

<div class="<%= cls %>">

答案 1 :(得分:1)

<div class=<%= cls %> >

应该是

<div class="<%= cls %>">

您正在将字符串替换为erb占位符,但是基础模板并不表示该占位符本身就是字符串。 ERB可能会尽力而为,但显然无法应对。编辑:Sergio指出这很可能是浏览器在做,而不是ERB。