【问题标题】:Customize/modify Rails 3 resources routing自定义/修改 Rails 3 资源路由
【发布时间】:2014-01-12 13:12:56
【问题描述】:

我目前正在编写一个具有常规资源(如对象)的 Rails 应用程序。但是我想让我的资源可以同步。我的 Web 应用程序使用 Web 离线存储来缓存来自服务器的结果(用户无法修改服务器上的数据,使同步更容易)。当我从服务器获取时,它会返回一个哈希响应,如:

{
  :new => [...]
  :updated => [...]
  :deleted => [...]
}

这一切都很好,直到我想要一个不进行任何同步并简单地返回模型数组的常规 fetch 方法

现在我的问题是我想在我的routes.rb 文件中创建一个方法来设置路由,以便我有一个到synced_indexindex 的路由。理想情况下,我可以这样做:

synced_resources :plans

然后将创建所有常规资源路线以及一些额外的路线,例如synced_index。关于如何最好地做到这一点的任何想法?

注意:我知道您可以使用 do...end 语法修改资源,但我想将其抽象为一个函数,因为我必须对很多模型执行此操作。

【问题讨论】:

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


    【解决方案1】:

    您可以轻松地将更多动词添加到宁静的路线:

    resources :plans do
      get 'synced_index', on: :collection
    end
    

    查看guides了解更多信息。

    如果你有几个类似的路由,那么当然,你可以添加一个 'synced_resources' 助手:

    def synced_resources(*res)
      res.each do |r|
        resources(r) do
          get 'synced_index', on: :collection
        end
      end
    end
    

    将上述方法包装在要包含在 ActionDispatch::Routing::Mapper 中的模块中。

    【讨论】:

    • 最终将其放入初始化程序中,这是必要的,因为它需要在绘制路线之前执行。谢谢!
    猜你喜欢
    • 2011-01-17
    • 1970-01-01
    • 2014-08-22
    • 2016-09-28
    • 1970-01-01
    • 2015-09-26
    • 2011-07-10
    • 2011-05-23
    • 1970-01-01
    相关资源
    最近更新 更多