我正在尝试从头开始在Rails中构建CMS,并且为了显示用户生成的页面,我无法确定如何做到这一点。
我现在拥有它的方式,我有一个名为'content'的控制器,其中包含一个名为'show'的动作。在routes.rb中,我有一个规则,将网站名称后的任何名称传递给内容控制器,显示带参数名称的操作。
例如,www.mysite.com/about_us将路由到
:controller => 'content', :action => 'show', :page => 'about_us'
在内容控制器中,我在Pages模型上查找以找到命名页面:
@markup = Page.find_by_name(params[:page])
然后在show.html.erb视图中,我使用原始帮助器来显示内容:
<%= raw @markup.text %>
这种方法是否违反了我在Rails中做事的方式?或者这是一个好的解决方案吗?
答案 0 :(得分:0)
我最终使用了清理帮助器,默认情况下它会删除<script>
标签,这实际上是您需要阻止XSS的,据我所知。对于那些通过搜索找到这个的人来说,唯一的代码就是我在上面描述的内容中所改变的那个代码:
<%= sanitize @markup.text %>