0

我正在尝试创建一个返回 html 标记的 Ruby gem,如下所示:

class Hola
    def self.hi(name = "world")
        "hello #{name}"
    end

    def self.hi_with_markup(name = "world")
        "<strong>hello #{name}</strong>"
    end
end

但是,每当我尝试在 test.html.erb 文件中使用它时,如下所示:

<%= Hola.hi_with_markup(", please work!") %>

它返回带有打印标签的字符串,而不是实际呈现 html。如何从 gem 方面解决这个问题?

谢谢!

4

2 回答 2

2

在 Rails 3 中,对于任何被认为不安全的字符串,默认值从“不”转义 HTML 更改为转义 HTML(即,将 '>' 转换为 >);这通常是任何可能包含用户字符的字符串,包括 gem 的输出。有两种方法可以解决这个问题raw().html_safe

这是一个全面的答案:raw vs. html_safe vs. h to unescape html

简短的回答是这样做:

<%= Hola.hi_with_markup(", please work!").html_safe %>

或者

<%= raw(Hola.hi_with_markup(", please work!")) %>
于 2013-01-16T18:06:10.400 回答
1

尝试这个:

class Hola
    def self.hi(name = "world")
        "hello #{name}"
    end

    def self.hi_with_markup(name = "world")
        "<strong>hello #{name}</strong>".to_html
    end
end
于 2013-01-16T17:57:59.770 回答