Маршруты пространства имен Rails 3: как связать * из * пространства имен обратно с глобальным пространством имен?[REVISED] - PullRequest
3 голосов
/ 20 мая 2011

У меня есть общий файл макета, используемый для всего сайта. Он содержит ссылки, такие как:

<%= link_to("Home", { :controller => :home, :action => :index }) %>

И другие общие ссылки в верхнем / нижнем колонтитуле и т. Д.

Все мои контроллеры просто находятся в каталоге app/controllers/. Но я добавил пространство имен для администраторов (для запрета пользователей и т. Д.):

namespace :admin do
  resources :users
end

Мое пространство имен администратора не отличается от внешнего вида, поэтому оно использует тот же макет, что и остальная часть сайта. Это вызывает некоторые проблемы, поскольку все мои вызовы link_to и url_for неправильно интерпретируются как, скажем:

<%= link_to("Home", { :controller => "admin/home", :action => :index }) %>

Что приводит к сбою приложения, поскольку такой маршрут не существует. Нужно ли мне просматривать все мои шаблоны, используемые макетом, и менять часть контроллера link_to с косой чертой или есть лучший способ сделать все мои маршруты верхнего уровня функциональными даже в пространстве имен администратора ? Я связываю пространство имен администратора с пространством имен верхнего уровня для многих вещей, поэтому было бы хорошо, если бы мне действительно не пришлось уделять особое внимание моим link_to вызовам.

В итоге, когда под контроллером пространства имен нужно ли ставить перед всеми :controller параметрами в link_to начальную косую черту, чтобы вырваться из пространства имен?

1 Ответ

3 голосов
/ 20 мая 2011

Определение маршрута для форумов в маршрутизации и использование аргумента forum_path вместо хэша: controller /: action должно быть достаточно чистым.

config / rout.rb:

match '/forums' => 'forums#index', :as => :forums

Просмотров:

<li class="menuitem"><%= link_to("Forums", forums_path()) %></li>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...