rails生成的控制器中,大部分的action代码都非常相似,每个Action中基本上都有如下代码:
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @post }
end
rails的宗旨是瘦Controller胖Model,现在Controller还不算瘦,要再让他瘦一点,那么可以借助Resource Controller的力量,使用这个插件可以减少大量Controller重复的代码。著名的电子商务程序spree
http://spreecommerce.com/ 就使用了这个插件,让控制器变动更精巧。
安装Resource Controller有很多种方式。
在你的应用目录下执行
ruby script/plugin install git://github.com/giraffesoft/resource_controller.git
或者下载下来后复制过去
git clone git://github.com/giraffesoft/resource_controller.git
这两种方式都要有Git环境的支持,后面我会写一篇Git使用的相关文章,现在你可以google一下相关资料。
如果实在懒得用Git那就去下载zip包吧
http://github.com/giraffesoft/resource_controller/downloads
在控制器中有两种方式使用,各有不同:
第一种继承 ResourceController::Base。
第二种在控制器中调用resource_controller方法。
可能你认为这么做失去了对原来Action的可控制性,那就错了,Resource Controller可以让你控制Action的生命周期(Before and After),下面的代码应该能看明白:
class ProjectsController < ResourceController::Base
new_action.before do #new action请求之前做些什么?
3.times { object.tasks.build }
end
create.after do #create action之后做些什么?
object.creator = current_user
end
end
当然其它的action类似这样的处理方式。
Flash
class ProjectsController < ResourceController::Base
create.flash "Can you believe how easy it is to use resource_controller? Neither could I!"
end
respond_to
增加响应类型
class ProjectsController < ResourceController::Base
create.wants.js { render :template => "show.rjs" }
end
比如要让index方法响应输出xml数据,可以这么写:
index.wants.xml { render :xml => @posts }
或者重写
class ProjectsController < ResourceController::Base
create.response do |wants|
wants.html
wants.js { render :template => "show.rjs" }
end
end
Resource Controller还有更多的特性,你可以参考
http://github.com/giraffesoft/resource_controller/tree/master
希望Resource Controller能为你带来便利。
分享到:
- 2009-07-15 11:25
- 浏览 1192
- 评论(0)
- 论坛回复 / 浏览 (0 / 2031)
- 查看更多
相关推荐
Pod进阶、Controller进阶、Resource和Dashboard 安装并使用好一个dashboard,操作及效果见博客:https://blog.csdn.net/qq_36963950/article/details/125115389
vue-resource是Vue.js的一款插件,它可以通过...另外,vue-resource还提供了非常有用的inteceptor功能,使用inteceptor可以在请求前和请求后附加一些行为,比如使用inteceptor在ajax请求时显示loading界面
新增功能:使用常见用例预设修改请求和响应标头(启用CORS,强制允许外部内容,允许iframe等)。 通过该扩展程序,您可以在发出请求之前即时重定向URL。 您也可以将URL重定向到可以使用此扩展名创建的文本文档。 ...
Laravel开发-resource-controller 与Laravel资源路由方法匹配的资源控制器。
Resource.Laod方法必须要传路径 这里封装了一下 再Tool/Resource/Get path 生成路径 再调用ResourceManager.Load 方法就可以只传你想要加载的资源名字 Manager自动帮你找路劲
Kubernetes“应用程序”自定义资源控制器 1.简介 该项目是他在Delivion GmbH( )进行为期6周的实习期间被提议给Thai Hoang( )的一项任务。 Delivion为数字娱乐,金融公司和保险提供商的客户计划,开发和运营多云...
hibernate的resource使用
【插件简介】 单击Save All Resources扩展插件,即可下载当前页面内所有资源文件并保留文件夹结构。 【插件网站】 https://github.com/up209d/ResourcesSaverExt 【插件版本】 2.0.4 【插件标签】 工具 Chrome插件
Android常用Resource使用例子,包括String、Bool、Color、Dimention、ID、Integer、Integer Array、Typed Array的测试代码。
Resource Builder是一款收费的可视化资源编辑器,功能强大,直接在resource builder中点击注册,输入验证码即可激活使用。
谷歌插件Resource Override,可以拦截请求替换内容
Reflector插件(能反编译resource文件)
赠送jar包:osgi-resource-locator-1.0.1.jar; 赠送原API文档:osgi-resource-locator-1.0.1-javadoc.jar; 赠送源代码:osgi-resource-locator-1.0.1-sources.jar; 赠送Maven依赖信息文件:osgi-resource-locator...
资源文件编辑插件。很好使,在link中给一个xx.link文件。文件写path=D:\\d\\ 这个路经就是解压后文件夹的路径。就可以用了。
Android_Resource_Controller #适用于Android的OMF资源控制器这是用Java编写的OMF资源控制器的... xmpp连接的参数位于文件夹“ Eclipse Android Project / src / com / omf / resourcecontroller / Constants.java”中
主要介绍了Java try-with-resource语法使用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
wpf-资源的使用-resource
spring使用resource注解的demo,依赖的库是spring core,建议通过myeclise添加。
最近手头有个小项目,打算用vue练个手,期间用到了vue的插件:vue-resource。下面是我使用这个插件的一些经验,算是给自己写的一个笔记,分享出来也希望和我遇到同样坑的朋友可以借此踩坑而过~ 在使用这个插件之前...
ResXManager是用于管理resx资源文件的Visual Studio扩展,它提供了在Visual Studio中统一管理所有资源文件的用户界面。小规模的程序用不上,但一旦资源和资源文件达到一定数量管理这些资源将十分痛苦,这时候...