Направьте контроллер в пространство имен: admin в / admin - PullRequest
8 голосов
/ 27 января 2012

Я чувствую, что это может быть глупый вопрос, но уже поздно, и моя голова немного тает. Поэтому я ценю помощь.

Я пытаюсь отобразить URL http://localhost:3000/admin к контроллеру приборной панели, но я эпически терплю неудачу.Может быть, это даже невозможно или совершенно неправильная идея, но в любом случае мои маршруты выглядят так, и да

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

и мой простой dashboard_controller.rb

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

  def index
    @schools = School.all
  end
end

, и мой взгляд расположенв views / admin / dashboard / index.html.erb

спасибо за любой ввод

Ответы [ 3 ]

10 голосов
/ 27 января 2012

Если все, что вы пытаетесь сделать, это направить /admin к этому контроллеру приборной панели, то вы слишком усложняете его, распределяя пространство имен таким образом.

Пространство имен с вложенным ресурсом, подобным этому, будет означать, что для действия :index это будет /admin/dashboards вместо чистого маршрута /admin (и это можно проверить, запустив rake routes в командной строке для получить список ваших маршрутов).

Вариант 1: Вы хотели, чтобы это имело пространство имен

# 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

Вариант 2: Вы не хотели так именовать пространство

Маршрут:

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

Контроллер:

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

Виды должны быть перемещены обратно на:

views/dashboards/index.html.erb

Подробнее: http://guides.rubyonrails.org/routing.html

3 голосов
/ 19 августа 2013

Относительно http://guides.rubyonrails.org/routing.html Я предпочитаю это

namespace :admin do
  root to: "admin/dashboards#index"
  resources :dashboard
end
0 голосов
/ 04 сентября 2013

Попробуйте это:

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