`
pure
  • 浏览: 350900 次
社区版块
存档分类
最新评论

Resource Controller插件使用

阅读更多
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能为你带来便利。


分享到:
评论

相关推荐

    Pod进阶、Controller进阶、Resource和Dashboard

    Pod进阶、Controller进阶、Resource和Dashboard 安装并使用好一个dashboard,操作及效果见博客:https://blog.csdn.net/qq_36963950/article/details/125115389

    vue resource插件

    vue-resource是Vue.js的一款插件,它可以通过...另外,vue-resource还提供了非常有用的inteceptor功能,使用inteceptor可以在请求前和请求后附加一些行为,比如使用inteceptor在ajax请求时显示loading界面

    Resource Override-crx插件

    新增功能:使用常见用例预设修改请求和响应标头(启用CORS,强制允许外部内容,允许iframe等)。 通过该扩展程序,您可以在发出请求之前即时重定向URL。 您也可以将URL重定向到可以使用此扩展名创建的文本文档。 ...

    Laravel开发-resource-controller

    Laravel开发-resource-controller 与Laravel资源路由方法匹配的资源控制器。

    Resource加载插件

    Resource.Laod方法必须要传路径 这里封装了一下 再Tool/Resource/Get path 生成路径 再调用ResourceManager.Load 方法就可以只传你想要加载的资源名字 Manager自动帮你找路劲

    Kubernetes_Custom_Resource_Controller

    Kubernetes“应用程序”自定义资源控制器 1.简介 该项目是他在Delivion GmbH( )进行为期6周的实习期间被提议给Thai Hoang( )的一项任务。 Delivion为数字娱乐,金融公司和保险提供商的客户计划,开发和运营多云...

    hibernate的resource使用

    hibernate的resource使用

    Save All Resources - 谷歌(Chrome)浏览器插件

    【插件简介】 单击Save All Resources扩展插件,即可下载当前页面内所有资源文件并保留文件夹结构。 【插件网站】 https://github.com/up209d/ResourcesSaverExt 【插件版本】 2.0.4 【插件标签】 工具 Chrome插件

    Android常用Resource使用例子

    Android常用Resource使用例子,包括String、Bool、Color、Dimention、ID、Integer、Integer Array、Typed Array的测试代码。

    Resource Builder 注册码

    Resource Builder是一款收费的可视化资源编辑器,功能强大,直接在resource builder中点击注册,输入验证码即可激活使用。

    谷歌插件Resource Override,可以拦截请求替换内容

    谷歌插件Resource Override,可以拦截请求替换内容

    Reflector插件(能反编译resource文件)

    Reflector插件(能反编译resource文件)

    osgi-resource-locator-1.0.1-API文档-中文版.zip

    赠送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...

    resource编辑插件

    资源文件编辑插件。很好使,在link中给一个xx.link文件。文件写path=D:\\d\\ 这个路经就是解压后文件夹的路径。就可以用了。

    Android_Resource_Controller:适用于Android的OMF资源控制器

    Android_Resource_Controller #适用于Android的OMF资源控制器这是用Java编写的OMF资源控制器的... xmpp连接的参数位于文件夹“ Eclipse Android Project / src / com / omf / resourcecontroller / Constants.java”中

    Java try-with-resource语法使用解析

    主要介绍了Java try-with-resource语法使用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    wpf-资源的使用-resource

    wpf-资源的使用-resource

    spring使用resource注解的demo

    spring使用resource注解的demo,依赖的库是spring core,建议通过myeclise添加。

    vue插件vue-resource的使用笔记(小结)

    最近手头有个小项目,打算用vue练个手,期间用到了vue的插件:vue-resource。下面是我使用这个插件的一些经验,算是给自己写的一个笔记,分享出来也希望和我遇到同样坑的朋友可以借此踩坑而过~ 在使用这个插件之前...

    ResXManager.VSIX.vsix 插件

    ResXManager是用于管理resx资源文件的Visual Studio扩展,它提供了在Visual Studio中统一管理所有资源文件的用户界面。小规模的程序用不上,但一旦资源和资源文件达到一定数量管理这些资源将十分痛苦,这时候...

Global site tag (gtag.js) - Google Analytics