在控制器中生成下标并传递给视图

时间:2015-07-03 09:32:13

标签: html ruby-on-rails

在控制器中,我可以传递字符串进行查看。

如何传递带下标的字符串?

在html中很容易,只需使用<sub>标记。

我尝试了3次传递这个下标来查看但失败了。

  1. 如果我在字符串中传递<sub>,它将显示I<sub>tag</sub>而不是 tag
  2. 如果我使用string1="string"+<sub>+"tag"+</sub>,并通过 string1,控制器会给出错误!
  3. 最后,我尝试直接在页面内复制下标字符串,我 还有一个无法显示的错误。
  4. 如何将下标字符串传递给视图?我必须循环不同的条件,所以我不能使用<sub>标签,我需要从控制器传递。

    修改

    我在控制器中尝试了这段代码

      @valuedisplay=@value.to_s + " m/s<sup>2</sup>".html_safe
    

    作为建议解决方案,我得到:

    what shows up in web page

    就像我在第一次尝试中所说的那样,显示<sup>而不是m 2

    如果我在视图中这样做,我有很多不同类型的数据,我需要根据不同的类型在视图中添加检查数据类型代码,它的可行但会使视图凌乱,我觉得应该有一个简洁的方法来在控制器中解决它?

1 个答案:

答案 0 :(得分:1)

您需要在视图中安全地呈现HTML,为此,您需要在字符串上调用html_safe函数:

@str = "I<sub>tag</sub>".html_safe

现在,当您将此@str传递给您的视图时,它会按预期呈现@str

在视图中:

<%= @str %>

<强>注意:

这样做是非常糟糕的做法。 <sub>ag</sub>属于视图,因此它应该在视图中。您可以执行以下操作:

在控制器中:

@str = "tag"

并且在视野中:

I<sub><%= @str %></sub>
<%# or %>
<%= "I<sub>#{@str}</sub>" %>