Rails 4 - 如何匹配命名空间中的路由

时间:2014-12-09 20:07:10

标签: ruby-on-rails ruby routes ruby-on-rails-4.1

您好我有管理面板控制器,管理面板中有很多控制器。 我想匹配通常没有使用名称空间的路线

match ':controller(/:action(/:id))', :via => [:get, :post]

我想在名称空间控制器中使用当前的

router.rb

namespace :admin do

get '', to: 'dashboard#index', as: '/'

get 'dashboard/index'

##AUTHENTICATION
get 'login/index'
get 'login/logout'
post 'login/attempt_login'
get 'login/attempt_login'

##PAGES
get 'pages/index'
get 'pages/add_new'
get 'pages/edit'
post 'pages/create'
post 'pages/update'
post 'pages/task'
get 'pages/task'

##USERS
get 'users/index'
get 'users/edit'
get 'users/delete'
get 'users/destroy'
get 'users/update'
get 'users/add_new'
post 'users/create'
post 'users/update'
post 'users/task'

#USER GROUPS
get 'user_group/index'
get 'user_group/add_new'
get 'user_group/edit'
post 'user_group/create'
post 'user_group/update'
post 'user_group/task'

#USER GROUPS
get 'access_sections/index'
get 'access_sections/add_new'
post 'access_sections/create'
post 'access_sections/update'
post 'access_sections/task'

end

有任何解决方案吗?

2 个答案:

答案 0 :(得分:6)

您只需将您声明的路由包装在名称空间中,如下所示:

namespace :login do
   get 'index'
   get 'logout'
end

http://guides.rubyonrails.org/routing.html#controller-namespaces-and-routing

答案 1 :(得分:2)

例如,我们有可以取消的订单:

以下routes.rb

中的说明
  resources :orders do
      post :cancel, to: 'orders/cancellations#cancel'
  end

将请求发送到app/controllers/orders/cancellations_contoller.rb

module Orders
  class CancellationsController
    def cancel
      @order = Order.find(params[:id]).cancel
    end
  end
end

使用多种服务方法重构控制器资源非常有用。

希望有所帮助