代码之家  ›  专栏  ›  技术社区  ›  Richard Jarram

我该如何简化这个路由编码,以减少行数?

  •  0
  • Richard Jarram  · 技术社区  · 6 年前

    我已经扩展了我的设计控制器(参见本文 Extending Devise Registration Controller )现在我想编辑我的路线。

    这条路线固然可行,但看起来很笨重。有没有一种方法可以重构这段代码,使其占用更少的行?

    Rails.application.routes.draw do
      devise_for :users, controllers: {
          sessions: "sessions/sessions",
          registrations: "sessions/registrations",
          password: "sessions/passwords",
          confirmations: "sessions/confirmations",
          omniauth: "sessions/omniauth",
          unlocks: "sessions/unlocks",
       }
    end
    
    0 回复  |  直到 6 年前
        1
  •  1
  •   Jonathan Thom    6 年前

    我要补充一点,在我个人看来,动态生成的路由有时比它们的价值更麻烦。

    不过,我相信以下几点是可行的。您可以从路径名数组中构造一个散列,然后使用它来分配控制器。

      paths = ["sessions", "registrations", etc..]
      routes = paths.each_with_object({}) { |path, h| h[path] = "sessions/#{path}" }
      devise_for :users, controllers: routes