2

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

<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 输出?

4

3 回答 3

3

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

<%= d.label :first_name, "First Name<em>*</em>".html_safe
于 2012-11-25T15:29:53.317 回答
2

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

相反,考虑给标签一个 html 类,如“必需”。然后在您的 CSS 中,为“必需”类的标签元素定义一个选择器,添加 * 并根据需要设置样式。

这是我的一个项目中的一些 SCSS:

.required::before {
        content: '*';
        color: $orange;
        margin-right: 2px;
        position: relative;
        left: -2px;
      };
于 2012-11-25T23:44:52.357 回答
2

试试生的

<%= d.label :first_name, raw("First Name<em>*</em>") %>
于 2012-11-25T14:55:37.400 回答