【问题标题】:Rails: How to make a custom route from resourceRails:如何从资源中创建自定义路由
【发布时间】:2012-01-07 20:28:31
【问题描述】:

我建立了一个 Enki 博客,并在 www.localhost:3000/admin 登录。`

我猜这个管理员 url 是由路由中的这段代码决定的,但是,出于额外的安全原因,我想进行登录,例如,

www.localhost:3000/ilovejesus

Enki::Application.routes.draw do
  namespace 'admin' do
    resource :session

根据 rake 路由告诉我的信息,我猜是 admin_root 到 :controller => Admin/Dashboard, :action => 'show' 需要更改。

谁能告诉我如何改变它,例如 localhost:3000/iloveronpaul

耙子路线:

admin_session POST   /admin/session(.:format)                        {:action=>"create", :controller=>"admin/sessions"}
   new_admin_session GET    /admin/session/new(.:format)                    {:action=>"new", :controller=>"admin/sessions"}
  edit_admin_session GET    /admin/session/edit(.:format)                   {:action=>"edit", :controller=>"admin/sessions"}
                     GET    /admin/session(.:format)                        {:action=>"show", :controller=>"admin/sessions"}
                     PUT    /admin/session(.:format)                        {:action=>"update", :controller=>"admin/sessions"}
                     DELETE /admin/session(.:format)                        {:action=>"destroy", :controller=>"admin/sessions"}
 preview_admin_posts POST   /admin/posts/preview(.:format)                  {:action=>"preview", :controller=>"admin/posts"}
         admin_posts GET    /admin/posts(.:format)                          {:action=>"index", :controller=>"admin/posts"}
                     POST   /admin/posts(.:format)                          {:action=>"create", :controller=>"admin/posts"}
      new_admin_post GET    /admin/posts/new(.:format)                      {:action=>"new", :controller=>"admin/posts"}
     edit_admin_post GET    /admin/posts/:id/edit(.:format)                 {:action=>"edit", :controller=>"admin/posts"}
          admin_post GET    /admin/posts/:id(.:format)                      {:action=>"show", :controller=>"admin/posts"}
                     PUT    /admin/posts/:id(.:format)                      {:action=>"update", :controller=>"admin/posts"}
                     DELETE /admin/posts/:id(.:format)                      {:action=>"destroy", :controller=>"admin/posts"}
 preview_admin_pages POST   /admin/pages/preview(.:format)                  {:action=>"preview", :controller=>"admin/pages"}
         admin_pages GET    /admin/pages(.:format)                          {:action=>"index", :controller=>"admin/pages"}
                     POST   /admin/pages(.:format)                          {:action=>"create", :controller=>"admin/pages"}
      new_admin_page GET    /admin/pages/new(.:format)                      {:action=>"new", :controller=>"admin/pages"}
     edit_admin_page GET    /admin/pages/:id/edit(.:format)                 {:action=>"edit", :controller=>"admin/pages"}
          admin_page GET    /admin/pages/:id(.:format)                      {:action=>"show", :controller=>"admin/pages"}
                     PUT    /admin/pages/:id(.:format)                      {:action=>"update", :controller=>"admin/pages"}
                     DELETE /admin/pages/:id(.:format)                      {:action=>"destroy", :controller=>"admin/pages"}
      admin_comments GET    /admin/comments(.:format)                       {:action=>"index", :controller=>"admin/comments"}
                     POST   /admin/comments(.:format)                       {:action=>"create", :controller=>"admin/comments"}
   new_admin_comment GET    /admin/comments/new(.:format)                   {:action=>"new", :controller=>"admin/comments"}
  edit_admin_comment GET    /admin/comments/:id/edit(.:format)              {:action=>"edit", :controller=>"admin/comments"}
       admin_comment GET    /admin/comments/:id(.:format)                   {:action=>"show", :controller=>"admin/comments"}
                     PUT    /admin/comments/:id(.:format)                   {:action=>"update", :controller=>"admin/comments"}
                     DELETE /admin/comments/:id(.:format)                   {:action=>"destroy", :controller=>"admin/comments"}
undo_admin_undo_item POST   /admin/undo_items/:id/undo(.:format)            {:action=>"undo", :controller=>"admin/undo_items"}
    admin_undo_items GET    /admin/undo_items(.:format)                     {:action=>"index", :controller=>"admin/undo_items"}
                     POST   /admin/undo_items(.:format)                     {:action=>"create", :controller=>"admin/undo_items"}
 new_admin_undo_item GET    /admin/undo_items/new(.:format)                 {:action=>"new", :controller=>"admin/undo_items"}
edit_admin_undo_item GET    /admin/undo_items/:id/edit(.:format)            {:action=>"edit", :controller=>"admin/undo_items"}
     admin_undo_item GET    /admin/undo_items/:id(.:format)                 {:action=>"show", :controller=>"admin/undo_items"}
                     PUT    /admin/undo_items/:id(.:format)                 {:action=>"update", :controller=>"admin/undo_items"}
                     DELETE /admin/undo_items/:id(.:format)                 {:action=>"destroy", :controller=>"admin/undo_items"}
        admin_health        /admin/health(/:action)(.:format)               {:action=>"index", :controller=>"admin/health"}
          admin_root        /admin(.:format)                                {:controller=>"admin/dashboard", :action=>"show"}
            archives GET    /archives(.:format)                             {:action=>"index", :controller=>"archives"}
                page GET    /pages/:id(.:format)                            {:action=>"show", :controller=>"pages"}
                     GET    /:year/:month/:day/:slug/comments(.:format)     {:year=>/\d{4}/, :month=>/\d{2}/, :day=>/\d{2}/, :controller=>"comments", :action=>"index"}
                     POST   /:year/:month/:day/:slug/comments(.:format)     {:year=>/\d{4}/, :month=>/\d{2}/, :day=>/\d{2}/, :controller=>"comments", :action=>"create"}
                     GET    /:year/:month/:day/:slug/comments/new(.:format) {:year=>/\d{4}/, :month=>/\d{2}/, :day=>/\d{2}/, :controller=>"comments", :action=>"new"}
                     GET    /:year/:month/:day/:slug(.:format)              {:year=>/\d{4}/, :month=>/\d{2}/, :day=>/\d{2}/, :controller=>"posts", :action=>"show"}
     formatted_posts GET    /posts.:format                                  {:controller=>"posts", :action=>"index"}
               posts GET    /(:tag)(.:format)                               {:controller=>"posts", :action=>"index"}
                root        /(.:format)                                     {:controller=>"posts", :action=>"index"}

【问题讨论】:

  • 你能发布你的整个 routes.rb 文件吗?

标签: ruby-on-rails routes


【解决方案1】:

namespace 中添加 :path 选项

Enki::Application.routes.draw do
  scope :module => 'admin' do
    resource :session, :path_names => { :new => "liverandonions", 
                                        :show => "ilovejesus,
                                        :edit => "iloveronpaul" }

我不确定,但 path_names 选项可能必须包含在数组中。

即。

    resource :session, :path_names => { [:new => "liverandonions", 
                                        :show => "ilovejesus,
                                        :edit => "iloveronpaul"] }

让我知道哪一个有效。

【讨论】:

  • 谢谢,但该路径会影响 localhost:3000/admin 还是会影响命名空间中的每个“管理员”路径?
  • 命名空间中的每个路径。这是namespace routing documentation的链接
  • 好的,但我认为还有一种方法可以更改该网址,但我无法弄清楚。你是偶然知道的吗?
  • 这是错误的。 ruby 中的数组不能有键,它们只是值。
猜你喜欢
  • 2011-01-17
  • 1970-01-01
  • 2016-09-28
  • 2014-08-22
  • 1970-01-01
  • 2015-09-26
  • 2011-07-05
  • 1970-01-01
  • 2017-04-23
相关资源
最近更新 更多