为什么我的嵌入式ruby字符串在html中输出两个字符串?

时间:2014-03-26 15:27:36

标签: ruby-on-rails ruby

我有以下带有嵌入式ruby的表格行:

<tr class=<%= "image-carousel-show thumb-#{index}" %>>

创造了这个:

<tr class="image-carousel-show" thumb-0="">

但是,我希望thumb-0位于行的类中,而不是像它当前那样拥有自己的属性。

这就是我希望它显示为:

<tr class="image-carousel-show thumb-0">

我不确定为什么会这样做,在ERB中我把它全部作为一个字符串所以我不知道为什么它被输出为两个。

2 个答案:

答案 0 :(得分:8)

这不是由erb完成的,但它是由浏览器修改的,因为这些参数不在引号内。尝试:

<tr class="<%= "image-carousel-show thumb-#{index}" %>">

也绝对没有在erb中同时拥有这两个类的意义。这将做同样的事情并且稍微更具可读性。

<tr class="image-carousel-show thumb-<%= index %>">

答案 1 :(得分:4)

您的ERB已编译为HTML:

<tr class=image-carousel-show thumb-0>

将其解释为:

<tr class="image-carousel-show" thumb-0>

要解决此问题,您需要引用扩展名:

<tr class="<%= "image-carousel-show thumb-#{index}" %>">

但是,我建议使用content_tag来避免句法混淆:

<%= content_tag :tr, class: "image-carousel-show thumb-#{index}" do %>
  <%# tr contents %>
<% end %>