Маршрутизация пространства имен Rails 3 - PullRequest
4 голосов
/ 18 марта 2011


У меня есть пространство имен администратора и набор компаний, размещенных вне пространства имен администратора. Я хотел поместить компании в пространство имен администратора Затем я поместил companies_controller в каталог администратора и изменил определение на class Admin::CompaniesController < Admin::AdminController и поместите взгляды компаний в каталог администратора в / app / views / и поместите companies_helper в каталог администратора, и теперь он выглядит следующим образом:

module Admin::CompaniesHelper
end

Пространство имен в маршрутах.rb:

  namespace :admin do
    root :to => "companies#index"
    resources :companies
  end

Когда я захожу на localhost: 3000 / admin, я получаю эту ошибку:

undefined method `company_path' for #:0xb696b408>

Теперь скажите, пожалуйста, как отредактировать ссылки, чтобы ссылки работали правильно?

Ответы [ 3 ]

4 голосов
/ 18 марта 2011

Когда вы переместили контроллер в пространство имен администратора, вы изменили маршруты к ссылкам, созданным в шаблонах скаффолдинга.Например, если ваши шаблоны используют company_path, ссылки изменится на admin_company_path.

Чтобы просмотреть маршруты в вашем приложении в любой заданный момент времени, запустите «rake маршруты» из командной строки в корне вашего приложения rails,Это покажет вам все маршруты в вашем приложении

2 голосов
/ 08 июня 2011

Так как компания находится под администратором пространства имен, необходимо указать префикс пути с помощью администратора.

Вроде так:

admin_company_path(@company)

См. Это Руководство по Rails для получения дополнительной информации о маршрутизации Rails и пространствах имен.

0 голосов
/ 18 марта 2011

Я получил некрасивое решение, но оно работает.Я создал новый каркас, но по-другому: rails generate scaffold Admin::Companies вместо rails generate scaffold Companies , но я до сих пор не понимаю, как помощники создают URL для ресурсов: (

...