2010-07-23 3 views
1

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

map.root :controller => "dashboard" 

    map.namespace :tracking do |tracking| 
    tracking.resources :companies 
    end 

    map.namespace :status do |status| 
    status.resources :reports 
    end 

Ссылка на ребенок пути контроллер работает нормально прямо сейчас,

<%= link_to "New Report", new_status_report_path, :title => "Add New Report" %> 

Но моя проблема завязалась, когда я попытался сопоставить с только индексом родительского контроллера дорожка.

<%= link_to "Status Home", status_path, :title => "Status Home" %> 

Я в конечном итоге получить это, когда я загрузить страницу со ссылкой:

undefined local variable or method `status_path' 

Устанавливаются мои маршруты правильно для этого вида связи?

ОБНОВЛЕНИЕ: Я должен добавить, что никакие данные не связаны с родительским контроллером статуса. Он просто действует как заполнитель категории для остальных контроллеров, связанных со статусами, например: отчеты.

ответ

0

Если вы хотите/статус перейти к контроллеру состояния, он должен быть ресурсом, а не пространством имен. Вы размещаете ресурсы примерно таким же образом:

map.resource :status do |status| 
    status.resources :reports 
end 
+0

возможно я смущен от того, что пространство имен, но моя категория «статус» не имеет каких-либо данных, непосредственно связанных с ним. Для организации это просто категория-заполнитель. То, что я пытаюсь сделать, это просто создать целевую страницу для этой категории со ссылками на такие вещи, как отчеты и т. Д. – Dan

+0

Ресурс не должен иметь связанных с ним данных. Если вы хотите, чтобы страница была на странице «/ status», вам нужно направить ее куда-нибудь. Если вы хотите сохранить свои маршруты спокойными, вы должны сделать StatusesController и сделать статус уникальным ресурсом, как указано выше. Затем/status перейдет к методу show StatusesController. С другой стороны, иногда приложения будут иметь PagesController для всех страниц, которые не подходят, как маршруты ресурсов, вы можете направить его как «map.status»/status »,: controller =>: pages,: action => : status' – mckeed

0

Пространство имен не является ресурсом.

map.resources :statuses do |status| 
    status.resources :reports 
end 

Кроме того, для вашего вызова status_path требуется идентификатор.

status_path(:id => @status.id)

или

status_path(@status)

+0

хорошо, мой статус не является ресурсом, отчеты есть. в моем проекте нет такой вещи, как идентификатор состояния. – Dan

+0

Затем, пожалуйста, обновите свой пост, чтобы в вопросе было указано, что именно вы пытаетесь выполнить с помощью «status_path». – jdl

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