Ошибка маршрутизации Rails 3 (справка по маршрутам с пространством имен)

#ruby-on-rails #ruby #ruby-on-rails-3 #routes

#ruby-на-рельсах #рубиновый #ruby-on-rails-3 #маршруты

Вопрос:

Моделируйте отношения:

 class Project < ActiveRecord::Base
  ...
  has_one :project_team
  ...
end

class ProjectTeam < ActiveRecord::Base
  belongs_to :project
end
 

Контроллер:

 class Project::TeamController < ApplicationController
  ...
end
 

Маршруты:

 resources :projects do
  namespace :project do
    resources :team
  end
end
 

Код формы:

 = form_for @project do |f|
 

Когда я захожу в новую форму проекта, я получаю следующую ошибку:

 No route matches {:controller=>"project/team", :project_id=>#<Project id: nil, user_id: 1 ...
 

Я перепробовал много вариантов этого:

 = form_for [:project, :team, @project] do |f|
 

Но Безрезультатно. Маршруты едва обозначены. Но я работаю над новой формой проекта, поэтому мне интересно, почему он все равно пытается привлечь к этому проектную команду.

Спасибо за помощь! [:

Ответ №1:

Здесь мы должны использовать вложенные ресурсы,

 resources :projects do
  resource :project_team
end
 

Комментарии:

1. Ну, из-за того, что контроллер вложен, это не сработает. Она вложена в папку проекта следующим образом: class Project::TeamController < ApplicationController Изменил сообщение справки, чтобы отразить это.

Ответ №2:

Я не уверен в проблеме, но чтобы исправить это, я просто увеличил число имен моего контроллера.