这是一个双重问题。
我有一个接受用户输入的 RoR (3.0.7) 应用程序,例如创建一篇新闻文章。到目前为止,用户输入是纯 XHTML,因为用户是受信任的。然而,用 XHTML 在网站上创建帖子对某些用户来说是一个挑战,因此我们将尝试转向纺织。
为了使用纺织品,我安装了 RedCloth。
由于我们不会将现有的新闻文章转换为纺织品,我知道这将是获得统一数据的正确做法,因此计划是仅在给定日期之后在内容上使用 RedCloth。
在视图中,我只需要一个条件来检查 created_at 日期,然后在输出之前调用 RedCloth。但是,这意味着我必须遍历所有视图并在呈现特定内容时插入条件。我什至可以创建一个帮助程序来最小化我必须复制的代码。
我没有这样做并保持干燥,而是决定将逻辑向下移动到模型中。该模型有一个名为 articlecontent 的列。我想出的是下面的代码,到目前为止似乎有效:
def articlecontent
if !self.new_record? && created_at.to_datetime > 'YYYY.MM.DD'.to_datetime
articlecontent_in_textile = self[:articlecontent]
articlecontent_in_html = RedCloth.new(articlecontent_in_textile, [:filter_html]).to_html
return articlecontent_in_html
else
return self[:articlecontent]
end
end
所以我的问题是:
1)这是正确的方法吗?还是我应该定义某种 ViewHelper?
2) 似乎我无法在模型中调用 sanitize 助手,这可能是有充分理由的。有没有办法在模型中调用助手?
谢谢马克