Ruby on rails 使用HAML在段落内应用类

Ruby on rails 使用HAML在段落内应用类,ruby-on-rails,ruby,haml,Ruby On Rails,Ruby,Haml,我对使用HAML的RubyonRails模板有一个问题 我不知道如何在标记中应用特定类,例如: %p My name is John Doe 我想在“name”单词中添加一个.highlight类。如何做到这一点?我只知道这样: %p %span My %span.highlight name %span is John Doe 当然,我希望这不是最好的办法。有什么想法吗?不管怎样,都必须将突出显示的文本放在它自己的元素中,这样代码就非常接近了。不过,您不需要将其余文

我对使用HAML的RubyonRails模板有一个问题

我不知道如何在标记中应用特定类,例如:

%p My name is John Doe
我想在“name”单词中添加一个.highlight类。如何做到这一点?我只知道这样:

%p
    %span My
    %span.highlight name
    %span is John Doe

当然,我希望这不是最好的办法。有什么想法吗?

不管怎样,都必须将突出显示的文本放在它自己的元素中,这样代码就非常接近了。不过,您不需要将其余文本包装到元素中:

%p
我的
%span.突出显示名称
约翰·多伊是谁
这将产生:


我的
名称
约翰·多伊是谁

编辑:

对于问号,您可以使用Haml的
succeed
helper方法:

%p
成功吗
你的爱好是什么
%span.突出显示名称
这将导致:


你的爱好是什么
名称

还有
prefore
around
方法,您可以在此处阅读:

如果您更愿意使用字符串插值,那么定义自己的helper方法可能是最容易的

def hl(str)
捕获哈姆{
haml_标签“span.highlight”,转义一次(str)
}.脱衣!。html_安全
结束
因为这有点复杂,让我从里到外把它分解一下。首先,我们需要使用
escape\u一次性对字符串进行转义。只有当
str
来自用户输入(因此可能导致XSS攻击)时,这才是必要的,但在任何情况下都可以使用。然后我们使用
haml_标记
渲染
span.高亮显示
中的字符串。然后我们必须使用
capture\u haml
将此输出捕获为字符串,因为我们在插值中使用它(通常
haml\u标记
写入haml缓冲区,而不是返回字符串)。然后我们使用
strip因为Haml将在这之后呈现一个换行符,而您说您不希望这样。最后,我们使用
html\u safe
告诉Rails不要转义输出,因为它会破坏我们的
,我们已经转义了输入,所以我们知道它是安全的

现在,您可以在插值Ruby中使用
hl
方法:

%p
你叫什么名字?
这将导致:


你叫什么名字?


您已经将类添加到
span
,现在使用CSS,您可以将样式应用到
span
标记中包含的文本中。是的,之后应用CSS给它一种单调的感觉。我想有一种方法可以做到这一点,比如{…}或者没有?乔丹,你的答案当然有用,但它会自动在这些部分之间添加一个空格。同时,如果其中一个是“?”的话,我想在它前面避开一个空格。说得好,@MateuszKwaśniak。我已经用一些方法更新了我的答案来解决你的问题。哦,先生,我还在寻找答案,实际上找到了一个,刷新了这个问题,这是你的更新。另一个答案是
%span>?
删除问号前的空白。但是谢谢你,现在我知道了preced/success,这个{…}东西是插值的-是的,我忘了,谢谢<代码>%span>?
将起作用,但会将您的问号括在
中。更成问题的是,它还将删除问号后的空格,因此,如果后面跟着另一个句子,您将遇到同样的问题。