2012-01-27 20 views
7

Siento que esta puede ser una pregunta tonta, pero es tarde y mi cabeza se está derritiendo un poco. Por eso agradezco la ayuda.Enrutar un controlador al espacio de nombres: admin to/admin

Estoy tratando de asignar la url http://localhost:3000/admin a un controlador de tablero de instrumentos, pero estoy fallando épicamente. Tal vez esto es posible o ni siquiera la idea completamente equivocada, pero de todos modos mis rutas se parece a esto y sí

namespace :admin do 
    resources :dashboard, { :only => [:index], :path => '' } 
    ... 
end 

y mi sencilla dashboard_controller.rb

class Admin::DashboardController < ApplicationController 
    before_filter :authenticate_user! 
    filter_access_to :all 

    def index 
    @schools = School.all 
    end 
end 

y mi vista se encuentra en vistas/admin /dashboard/index.html.erb

gracias por cualquier entrada

Respuesta

9

Si todo lo que estamos tratando de hacer es /admin ruta a ese controlador salpicadero, a continuación, usted tiene más de lo complica por el espacio de nombres así.

namespacing con un recurso anidado como eso significaría que sería /admin/dashboards para la acción en lugar de tener un /admin ruta limpia :index (y se puede comprobar que mediante la ejecución de rake routes en la línea de comando para obtener una lista de sus rutas) .

Opción 1: destinado a espacio de nombres de esa manera

# putting this matched route above the namespace will cause Rails to 
# match it first since routes higher up in the routes.rb file are matched first 
match :admin, :to => 'admin/dashboards#index' 
namespace :admin do 
    # put the rest of your namespaced resources here 
    ... 
end 

Opción 2: No quisiste a espacio de nombres de esa manera

Ruta:

match :admin, :to => 'dashboards#index' 

Controlador:

# Remove the namespace from the controller 
class DashboardController < ApplicationController 
    ... 
end 

Vistas deben moverse de nuevo a:

views/dashboards/index.html.erb 

Más información: http://guides.rubyonrails.org/routing.html

+0

Que ks robado! La opción 1 me solucionó –

+1

Estos solo funcionan para mapear la ruta de acceso específica/admin para el índice de paneles de acciones específicas #. Tampoco asignan/admin /: action to dashboards #: action. – cilphex

0

Prueba esto:

namespace :admin do 
    root to: 'users#index' # whatever. Just don't start with /admin 
    #resources :dashboards <= REMOVE THIS LINE ! 
end 
Cuestiones relacionadas