0

客户通常希望能够控制他们的应用程序而不必返回给开发人员。在这些情况下,他们通常要求一个简单的 CMS,他们可以在其中编辑应用程序的其他静态部分。例如:

  • 隐私政策
  • 条件条款
  • 关于部分
  • 联系我们部分

在 Rails 应用程序中,将它们分开模型和控制器似乎很麻烦,因为它们实际上只是文本字段(尽管在我的特定情况下,关于/联系我们部分可以有多个部分)。控制器非常简单且相对不重要,因此它们看起来只是为了弄乱控制器目录。

我正在考虑某种可以包含所有这些字符串的 StaticContent 模型(尽管这个名称本身没有意义),但按名称对它们进行索引。所以我可以这样做:

StaticContent.find_by_name("about")

或者类似的东西,将所有东西都保存在一个控制器和模型中——但我仍然不喜欢一直按名称查找所有东西的想法。在我描述的情况下,有没有人遇到过更好的解决方案来存储此类数据?

4

2 回答 2

0

我建议将数据放在 .yml 文件中,例如

example.yml
 - content_name: privacy_policy
   - title: Privacy Policy  
   - content: blah blah blah
 - content_name: terms_and_conditions
   - title: Terms and Conditions
   - content: blah blah blah blah

将其添加到您的 seed_fu 并让它为一个包含列 content_name、title、content 的通用表播种。至于 find_by_name 我认为这样做没有什么大问题。使用 yml 文件应该有助于解决您如何存储这些数据的问题

于 2013-05-30T22:13:44.833 回答
0

Page曾经我们有一个模型,我在一个应用程序上工作过。我们使用friendly_idgem ( https://github.com/FriendlyId/friendly_id ) 为他们提供可以用作 id 和 uri 的 slug。那么你会有:

scope '/' do
  resource :pages
end

在你的路由文件和一个非常简单的控制器中,它只会通过:id参数查找(但是,这是一个人类可读的 slug)并将其渲染page.content到布局中(用于显示操作)。因此,例如/terms会显示您的条款和条件页面,/about会显示关于页面等。

我们使用 TinyMCE ( http://www.tinymce.com/ ) 作为所见即所得的编辑器来生成我们存储在对象content字段中的标记page

足够简单,并且是一个很好的灵活解决方案,甚至可以创建全新的pages. only: [ :show, :edit, :update ]如果您只想给它们一些可编辑的页面而不允许它们创建/销毁/移动它们,您当然可以轻松地将其限制为并阻止编辑 slug。

于 2013-05-30T22:43:57.600 回答