首页 > 解决方案 > 如何简化此路由编码以减少行数?

问题描述

我已经扩展了我的设计控制器(请参阅这篇文章扩展设计注册控制器),现在我想编辑我的路线。

这条路线运行良好,但看起来很笨重。有没有办法重构此代码以减少行数?

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

标签: ruby-on-railsdevisecontrollerroutes

解决方案


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

我相信以下内容会起作用。您可以从一组路径名中构造一个散列,然后使用它来分配您的控制器。

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

推荐阅读