2012-06-30 40 views
0

我有一个模型tag,属性为title (string)Rails:视图中安全吗?

A tag belongs_to型号documenthas_many :throught关联。

在文档#秀来看,我需要出示相关的该文档的所有标签,所以我做的:

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

这是安全的考虑,用户可以能够创建一个标签?

如果不安全,我该如何达到相同的结果?

谢谢。

回答

0

是的,标签的标题在成为链接内容之前将被转义,所以即使HTML中有它,也会呈现,而不是原始输出。 输出没有转义这里是从join产生的字符串,这很好。

+0

谢谢你的解释。 – HelloThor

0

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

0

在这种情况下,它是安全的link_to将逃脱它的说法,但为何要冒险(也许是块内将在几个月内修改,等...),使用safe_join

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

或使用我的rails_join“宝石”,你可以安全地做你的join而不需要raw