2009-12-28 3 views
0

В моем приложении у меня есть раздел администрирования с именами. Вот отрывок из моего routes.rb:По умолчанию пространство имен для полиморфных url_for

map.namespace :admin do |admin| 
    admin.resources :contents 
end 

map.resources :contents 

В моем админ имен, прямо сейчас я использую следующее:

link_to content, admin_content_path(content) 

Но я хочу сделать:

link_to content, content 

Какие в настоящее время эквивалентно:

link_to content, content_path(content) 

Есть ли способ, чтобы все ссылки в представлениях, принадлежащих контроллеру, имели префикс пространства имен?

ответ

2

, если я правильно читал, вы можете сделать

link_to content, [:admin, content] 

это должно заставить вас admin_content_path (содержание). предполагая, конечно, что содержимое является допустимой переменной (похоже, что вы взяли этот код из блока в представлении с индексом).

Однако префикс не применяется ко всем остальным ссылкам в представлении. Могу ли я предложить просто использовать спокойную нотацию admin_content_path (контент) впредь.

0

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

: path_prefix - установить префикс маршрутов с требуемыми переменными маршрута.

map.resources :contents, :path_prefix => '/admin' 
+0

Я не использую вложенный ресурс - я использую пространство имен. У меня есть две ссылки на содержимое, потому что я хочу иметь на нем два разных набора представлений - администратор и обычный пользователь. –

Смежные вопросы