[英]How to DRY on CRUD parts of my Rails app?
我正在编写一个应用程序 - 与许多应用程序类似 - 有90%的常规CRUD和10%的“果汁”,我们需要讨厌的业务逻辑和更多的灵活性和自定义。
关于这90%,我尽可能地坚持DRY原则。 只要控制器运行,我发现resource_controller真的有效,我可以摆脱该区域的所有控制器,用通用控制器替换它们。
现在我想知道如何使用相同的视图。 在这个应用程序上,我有一个整体的application.html.erb布局,然后我必须有另一个布局层,所有CRUD视图通用,最后是“核心”部分:
在index.html.erb上,我需要生成一个包含我指示的字段和标签的简单表。
对于新的和编辑,也是通用表单版本,指示标签和字段(如果需要,可以提供自定义字段)。
我不确定我是否需要演出,但是如果我这样做,它将与新的和编辑相同。
什么插件和工具(甚至文章和一般指针)可以帮助我完成这项工作?
谢谢,菲利普。
看起来只有一个非常接近您要求的新宝石:
http://github.com/codez/dry_crud
基于一个常见的超类(CrudController),您可以为各种模型控制器继承CRUD功能并调整其中的特殊功能。 这是你已经做过的,最有可能的。
关于dry_crud的新事物是视图和部分也是可继承的。 您为每个CRUD操作定义一个公共基本模板,可能会分成几个部分。 由于提供的帮助程序,可以通过查看当前模型的列定义来一般性地定义表单和表。 在特定模型的视图中,您可以仅调整需要自定义的部分或视图。
看看上面网站上的文档并保持干燥!
您可以运行script/generate scaffold test name:string description:text valid:boolean
并查看生成的视图(并运行script/destroy scaffold test
以删除文件)。 这将使您很好地了解编写4个默认Rails视图的标准方法。
我还建议阅读“使用Rails进行敏捷Web开发”和“The Rails Way”中的相关章节。
如果你有现有的视图需要清理,这集Railscasts很棒: 清理视图
D进制
如果您已经干掉控制器并且现在希望干掉视图,一种方法是render :action => *actionname*
并存储可能更改为实例变量的UI内容(以便它们在视图中可用)这种方式您将能够重复使用相同的编辑 , 新建 , 列表或显示视图。 例如,您正在编辑与Foo相关的内容,那么您的标题应该为Editing <%= @type %>
,因此您的表单助手也应如此。 Foo可能会改为bar 。 因此,您将为不同的实体(或控制器,我应该说)重新使用相同的视图。 请记住,与redirect_to
不同, render :action
仅呈现视图,并且不会调用它尝试呈现的操作的控制器操作。
有一点可以肯定的是,如果你想干掉任何东西,你需要标准化或遵循惯例。 例如,在这种情况下,您的视图的结构。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.