【发布时间】:2013-01-09 03:10:54
【问题描述】:
我正在尝试为 Ruby on Rails 应用程序中的各个页面设置单独的元描述和标题。这是以前的开发人员应用程序,我被赋予了编辑任务。另外,我是 Rails 和 Ruby 的新手。
该应用程序有一个controllers/pages_controller.rb,我可以在其中为某些页面(任务和免责声明)上的@descriptionX 和@title 设置唯一变量,但不能为其他页面设置唯一变量,例如pet_planning。
class PagesController < ApplicationController
def index
@title = params[:page].humanize
render params[:page]
end
def pet_planning
@descriptionX = 'pet planning'
@title = 'pet planning title'
render :pet_planning
end
def mission
@title = 'Our Mission Statement'
@descriptionX = 'Mission Description'
render :mission
end
def disclaimer
@title = 'Our Disclaimer'
render :disclaimer
end
end
我认为render params[:page] 是我迷路的地方。我不是 100% 确定这是做什么的,或者如何使用它。
我不明白为什么当views 都在同一个/views/pages/ 目录中时,我可以控制mission 的@title 和@description 而不是pet_planning。而且我似乎在应用程序的其他任何地方都找不到两者之间的任何区别。
另外,尝试在/views/pages/pet_planning.html.haml 文件中添加= @title = 'Pet Planning'。它确实改变了标题,但它也意外地显示在页面内容的顶部。
任何帮助将不胜感激。谢谢。
【问题讨论】:
-
澄清一下。我能够控制大多数页面的
@title和@description。除了/views/pages/目录中的少数几个。但是为什么mission和disclaimer也在上述目录中时我可以控制它们呢? -
render params[:page]允许攻击者执行任意代码(除非此处未显示清理)
标签: ruby-on-rails ruby controller