如何添加'页面'除了'标签' with act-as-taggable-on

时间:2013-12-23 05:52:47

标签: ruby tags content-management-system acts-as-taggable-on

我刚刚在最近几个月从客户端项目中学习Ruby,现在决定将我的旧CMS移植到Ruby中。

我已经成功安装了gem并使用标签和标签实现了act-as-taggable-on,这样我就可以在Post控制器中使用标签。我可以在我的编辑表单中添加标签,并按照预期将它们链接到我的帖子中。

我希望做的是使用act-as-taggable-on的增强功能来定义另一组标签'这实际上是页面。在我当前的应用程序中,我有一个名为Pages的表,Posts有一个名为PageID的字段。 Pages表包含页面的名称,以及该页面的一些配置功能,例如layout和css。帖子只能出现在他们分配/创建的页面中。

由于所有帖子都存储在同一个表中,因此我希望扩展act-as-taggable-on以处理我的标记和页面,如果这是有道理的。

我理解如何将相同的标记模型扩展到其他控制器,如照片,视频等,但我不确定如何应用2个不同的标记'模型到同一个控制器。如果我不对页面使用标记,我不确定如何定义页面'在Ruby上下文中,因为我需要每个用户的页面名称是动态的。理论上我理解如何在routes.rb中执行此操作,但我不知道如何定义我的页面。

感谢您的帮助!让我知道要发布的.rb文件代码,以说明我现在正在做什么。

1 个答案:

答案 0 :(得分:1)

您可以使用以下方法:

创建两个继承自“UserContent”基类的“Page”和“Post”类。 “Page”和“Blog”类必须各自拥有自己的控制器。

您可以使用以下内容路由到每个人:

scope '/blog' do
  resources :posts
end

scope '/about' do
  resources :posts
end

要使用帖子名称而不是ID,我强烈建议您结帐 stringex ,这样您就可以做到这一点。它将涉及为您的模型添加url属性,但我会让您查看他们的文档以了解它是如何工作的。这应该是您原始问题的答案,它应该是动态页面/帖子页面名称的一个更好的工具,而不是act-as-taggable-on。

此设置应该为您提供"site.com/about/page-name"页面,"site.com/blog/post-name"用于帖子。