0

我有一个tag带有属性的模型title (string)

一个tagbelongs_todocument具有has_many :throught关联的模型。

在 document#show 视图中,我需要显示与该文档关联的所有标签,所以我这样做:

%p= raw @document.tags.map{|t| link_to t.title.prepend('#'), t}.join(', ')

考虑到用户可以创建标签,这是否安全?

如果它不安全,我怎样才能达到相同的结果?

谢谢你。

4

3 回答 3

0

一般来说,所有逻辑(或尽可能多的)都应该转移到助手或模型中。我不会说这是“安全的”或“不安全的”,但总的来说这样做是好的做法。

于 2012-06-30T17:01:02.403 回答
0

是的,标签的标题在成为链接的内容之前会被转义,所以即使其中有 HTML,它也会被渲染,而不是原始输出。在此处不转义输出的是由 产生的字符串,这join很好。

于 2012-06-30T17:05:28.293 回答
0

在这种情况下,它是安全的,因为它link_to会逃避它的论点,但为什么要冒险(也许块的内部将在几个月内被修改,等等......),使用safe_join

%p= safe_join @document.tags.map{|t| link_to t.title.prepend('#'), t}, ', '

或者使用我的rails_join“宝石”,您可以join安全地进行操作,而无需raw.

于 2012-06-30T23:46:29.017 回答