3

我正在编写一个应用程序 - 与那里的许多应用程序类似 - 有 90% 的常规 CRUD 东西和 10% 的“果汁”,我们需要讨厌的业务逻辑和更多的灵活性和定制。

关于这 90%,我尽可能地坚持 DRY 原则。只要有控制器,我就发现 resource_controller 真的可以工作,我可以摆脱该区域的所有控制器,用通用控制器替换它们。

现在我想知道如何获得相同的观点。在这个应用程序上,我有一个整体的 application.html.erb 布局,然后我必须有另一个布局层,所有 CRUD 视图都通用,最后是“核心”部分:

  • 在 index.html.erb 上,我只需要生成一个包含我指示的字段和标签的简单表格。

  • 对于新建和编辑,还有通用表单编辑,指示标签和字段(如果需要,可以提供自定义字段)。

  • 我不确定我是否需要展示,但如果我这样做,它将与新建和编辑相同。

哪些插件和工具(甚至文章和通用指针)可以帮助我完成这项工作?

谢谢,费利佩。

4

3 回答 3

1

您可以运行script/generate scaffold test name:string description:text valid:boolean并查看生成的视图(并运行script/destroy scaffold test以删除文件)。这将使您很好地了解编写 4 个默认 Rails 视图的标准方法。

我还建议阅读“Agile Web Development with Rails”和“Rails Way”中的相关章节。

如果您有需要清理的现有视图,Railscasts 的这一集很棒:清理视图

达里

于 2009-01-25T04:51:25.847 回答
1

如果您已经干燥了控制器并且现在希望干燥视图,一种方法是render :action => *actionname*存储可能更改为实例变量的 UI 内容(以便它们在视图上可用)这样您就可以重用编辑新建列表显示的相同视图。例如,您正在编辑与Foo相关的内容,那么您的标题应为Editing <%= @type %>,您的表单助手也应如此。Foo很可能然后更改为bar。因此,您正在为不同的实体(或者我应该说的控制器)重新使用相同的视图。请记住,与 不同redirect_torender :action只渲染视图,不调用它试图渲染的动作的控制器动作。

有一件事是肯定的,如果你想干掉任何东西,你需要标准化或遵循约定。例如,在这种情况下,您的视图的结构。

于 2009-01-26T09:52:26.370 回答
1

看起来只有一个非常接近您的要求的新宝石:

http://github.com/codez/dry_crud

基于一个通用的超类(CrudController),您可以为您的各种模型控制器继承 CRUD 功能并调整那里的特殊功能。这是你已经做过的,很可能。

dry_crud 的新特性是视图和局部视图也是可继承的。您为每个 CRUD 操作定义一个通用的基本模板,可能分为几个部分。由于提供了帮助程序,表单和表格可以通过查看当前模型的列定义来进行一般性定义。在您的特定模型的视图中,您可以只调整需要自定义的部分或视图。

查看上面网站上的文档并保持干燥!

于 2010-06-12T15:03:40.447 回答