我有一个包含大量网页的网站。我建立了一个CMS部分,允许我通过SEO友好的URL找到CMS页面,如:
example.com/some-url
路线如下:
get '/:url_key', to: 'cms#find_page'
然后在我的控制器中,我可以通过运行以下查询找到该页面。
page = CMS.find_by(url_key: params[:url_key])
然后我可以使用page.title
page.meta_description
等从CMS对象中获取元数据
我的网站的另一部分就像一个更传统的rails应用程序,其中包含以下路由:
get '/another-controller/:url_key', to: 'another_controller#some_action
所以我有这些其他页面用于从数据库中提取记录,如产品。控制器根据url_key决定运行哪个查询。目前我只是在我的控制器中设置@title = "some title"
和@meta_description = "some description
,如果该变量存在,则会将其加载到我的HTML
响应的头部。
在控制器中静态设置title
和meta_description
对我来说似乎不太干净。我该怎么处理?我应该创建一个MetaData类,我静态地在那里分配那些标题,并像控制器和动作名称一样传递给类构造函数?我应该改为创建CMS页面而不是呈现cms页面的内容而不是渲染相关文件吗?我必须维护URL结构,因为这些页面已经在Google上排名多年。