Rails试图在f.label标签中使用html

时间:2012-11-25 14:25:51

标签: ruby-on-rails ruby ruby-on-rails-3

我正在努力实现这个目标:

<label ...>First name<em>*</em></label>
<input ... />

用这个:

<%= d.label :first_name do %>First Name<em>*</em><% end %>
<%= d.text_field :first_name, :required => "required" %>

但实际上是在制作:

First Name
<em>*</em>
<label ...>
    First Name
    <em>*</em>
</label>
<input .../>

我如何获得我想要实现的html输出?

3 个答案:

答案 0 :(得分:3)

只需将标签内容作为第二个参数传递给块,并使用.html_safe来阻止它被编码:

<%= d.label :first_name, "First Name<em>*</em>".html_safe

答案 1 :(得分:2)

尝试使用原始

<%= d.label :first_name, raw("First Name<em>*</em>") %>

答案 2 :(得分:2)

虽然这两个答案都完成了工作,但从网页设计的角度来看,它并不是真正“最正确”的方式。

相反,请考虑为标签提供类似“必需”的html类。然后在CSS中,为“required”类的标签元素定义一个选择器,该类添加一个*并根据需要对其进行样式化。

以下是我的一个项目中的一些SCSS:

.required::before {
        content: '*';
        color: $orange;
        margin-right: 2px;
        position: relative;
        left: -2px;
      };