Rails 3上的继承资源...响应者

时间:2012-03-07 09:55:23

标签: ruby-on-rails ruby ruby-on-rails-3

我刚刚开始为我正在构建的应用程序使用InheritedResources,当我查看它的Github页面时,它说它已被弃用,我应该使用Responders。

我是InheritedResources和Responders的新手,所以我很困惑,当我从文档中看到的是FlashResponders和HTTPCacheResponders时,我怎样才能从Responders获得我在InheritedResources中获得的内容(完整的REST操作基础“模板”代码)?

我也看过这个:

http://blog.plataformatec.com.br/tag/inherited_resources/

这是否意味着我不再需要“REST模板代码”?

1 个答案:

答案 0 :(得分:10)

respond_with(内置于Rails中)与responders gem的组合使得InheritedResources不再使用。

请查看this blog post,了解如何使用respond_with创建RESTful控制器的出色解释和演示。大多数控制器动作都减少为单行代码;使用InheritedResources可能有一个没有代码的控制器(因为它隐藏在gem中),但是Jose Valim(InheritedResources的创建者)认为这根据他的引用过于模糊:

  

“我发现响应者抽象和自定义Rails生成器在隐藏和显示太多逻辑之间提供了完美的平衡。”

如果要自动执行控制器操作的任何其他部分,responders即可发挥作用,例如,设置Flash消息。


更新:对于下面提出destroy行动

的评论者
def destroy
  record = Record.find(params[:id])
  flash[:notice] = "The record has been destroyed successfully" if record.destroy
  respond_with record
end