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
- 浏览 1225
- 评论(0)
- 论坛回复 / 浏览 (0 / 2063)
- 查看更多
相关推荐
使用"resource编辑插件",开发者可以直接在IDE中对这些资源进行编辑,无需频繁地在文件系统和代码之间切换,减少了出错的可能性,并简化了调试过程。 资源文件的管理在软件开发中至关重要,特别是对于大型项目而言...
在Magento中,插件主要分为两种类型:模型(Model)、资源模型(Resource Model)、集合(Collection)、助手(Helper)、控制器(Controller)、块(Block)和视图(View)。这些组件协同工作,以实现特定功能。在...
7. **插件体系**:Struts2拥有丰富的插件库,如Tiles插件用于布局管理,Struts2-dojo-plugin支持Dojo JavaScript库,Struts2-convention-plugin简化了配置,实现了约定优于配置。 8. **国际化...
此外,确保插件与当前使用的Magento版本兼容,因为不同版本之间可能存在API或结构差异。 安装完成后,商家在后台查看订单时,每条订单行下面将出现对应的商品图片,直观明了。这不仅提高了订单处理的效率,也为商家...
在使用过程中,要注意分页插件的文档和示例,确保正确地配置和使用。同时,保持代码结构清晰,遵循AngularJS的最佳实践,这将有助于项目的长期维护和扩展。 总之,AngularJS分页插件为开发人员提供了便利,使他们...
标题中的"very useful resource"表明我们将讨论一些关于CakePHP的极具价值的资源和知识点。 1. **安装与设置**: CakePHP提供了清晰的安装指南,包括使用Composer(PHP的依赖管理工具)进行自动安装,或者手动下载...
<Resource name="jdbc/MyDataSource" auth="Container" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/mydb" username="myuser" password=...
在控制器中,你可以使用`load_and_authorize_resource`或`authorize!`方法来执行授权检查。 ### 六、扩展与自定义 除了基本的`can`和`cannot`方法,Declarative Authorization还提供了许多高级功能,如基于角色的...
- 使用Maven Archetype插件创建一个新的Maven项目,选择合适的archetype模板。 - 在pom.xml文件中配置项目的基本信息,如groupId、artifactId、version,以及项目依赖。 3. SSM框架介绍: - Spring:提供依赖...
2. **国际化**:使用资源包(Resource Bundle)实现插件的多语言支持。 3. **持久化**:利用Preference Service保存用户配置,实现状态的持久化。 4. **工作流和事务**:使用Job API处理后台任务,Transaction ...
Struts2的Restful插件提供了这种支持,它允许我们使用动词和路径来定义Action,例如`/{resource}/{id}`。 **整合步骤** 1. **添加依赖**:首先,需要将Struts2的REST插件及其依赖添加到项目中,这里的jar包就起到了...
Kubernetes 201 是一个中级别的 Kubernetes 教程,涵盖了 Kubernetes 的高级概念、网络策略、Ingress Controller、存储插件等方面。 5. Kubernetes 集群 Kubernetes 集群是指多个节点组成的集群,每个节点可以...
7. **测试与调试**:SSH框架支持单元测试和集成测试,例如使用JUnit进行服务层的单元测试,使用Mockito模拟依赖对象,而Struts的Action可以通过Struts2的TestNG插件进行集成测试。这些测试工具能确保代码质量,及时...
- 使用`Route::apiResource`快速定义一组RESTful路由,例如`Route::apiResource('users', 'UserController');`,这会自动为`UserController`中的对应方法注册路由。 2. **控制器** - Laravel 的控制器用于处理...
5. **使用ModelAndView或者ResponseEntity**:如果你需要在Controller中返回视图和数据,可以使用`ModelAndView`类或者`ResponseEntity`类。`ModelAndView`适用于传统的视图渲染,而`ResponseEntity`则更加灵活,...
php artisan make:controller SlideController --resource ``` 接着,打开生成的 `app/Http/Controllers/SlideController.php` 文件,根据 `laravel-slider-pro` 的文档修改控制器方法以适应插件的需求。 为了在...
Struts2是一款强大的Java web开发框架,它基于MVC(Model-View-Controller)设计模式,为开发者提供了构建可维护性、可扩展性极高的Web应用程序的工具和平台。Struts2的核心是Action,它是业务逻辑处理的主要载体,...
这个压缩包主要涉及了.NET Framework框架下的MVC(Model-View-Controller)设计模式,并且使用了C#语言来处理事务(事物处理)操作。此外,描述中提到了vue-resource,这表明在前端部分可能采用了Vue.js框架进行数据...
7. **插件和集成**:Struts 2支持各种插件,如Tiles插件用于布局管理,Struts2 Dojo插件用于与Dojo JavaScript库集成,以及Struts2 jQuery插件与jQuery库的集成,提供丰富的AJAX功能。 8. **异常处理**:Struts 2...
当在类上使用`ApiResource`注解时,Symfony 的 API Platform 扩展会自动为该类生成默认的API操作,包括集合操作(如GET用于获取资源列表)和单项操作(如GET用于获取单个资源)。集合操作的GET和单项操作的GET是...