如何使用html_safe并将链接转换为绝对URL(不是相对URL)

时间:2017-03-22 19:42:23

标签: html ruby-on-rails

在Rails中,如何呈现存储的HTML并使用工作的绝对链接显示它?我有一大块HTML,我从视图页面调用html_safe。当我在浏览器中加载页面时,该HTML中的所有链接都呈现为我自己域中的相对URL,而不是指向原始目标的绝对链接。

在我的控制台中或作为表单的结果:

@company.about = "Some info about a <a href="http://google.com">company</a>."

在视图中:

<%= @company.about.html_safe %>

在浏览器中呈现的内容(相对网址):

有关company

的一些信息

我将喜欢在浏览器中呈现的内容(绝对网址):

有关company

的一些信息 PS - 我意识到这样做并不是很好的做法。但它不是用户提交的内容,只是我自己的内容。在我决定如何更好地构建模型以适应这些链接之前,它是一个临时工作流程。我更惊讶的是,无法找到关于html_safe实际上对链接有什么影响的更详细信息。

4 个答案:

答案 0 :(得分:1)

我在我的rails应用程序上测试了这个,然后运行(检查我如何使用'和'):

@company.about = 'Some info about a <a href="http://google.com">company</a>.'

<%= @company.about.html_safe %>

答案 1 :(得分:0)

你试过raw?

<%= raw @company.about %>

或其他什么(它没有经过测试,我将这种方法用于大虾,也许可以运行:

@company.about = "Some info about a #{<a href="http://google.com">company</a>}."

答案 2 :(得分:0)

个人建议。您可以将about列保存为降价文字。

然后使用redcarpet或markdown gem将模型内容翻译为html文本。

它更安全(redcarpet将处理它)和更多可定制(降价)。

答案 3 :(得分:0)

如果使用_url后缀,则生成的URL是绝对的。使用_path获取相对URL。

<%= link_to "Home", root_url %>

<%= link_to "Home", root_path %>

另请参阅插件:http://www.simonecarletti.com/blog/2009/10/actionmailer-and-host-value/