Используя метод единственного ресурса, вы сообщаете, что существует только один из этих объектов, в вашем файле маршрутов, я думаю, вам нужно изменить ваш ресурс: school на ...
resources :schools
Если, однако, вам нужна только одна школа, я думаю, вам нужно добавить опцию url в form_for ...
<% form_for(@school, :url => school_path) %>
Предлагаемое решение для последующих вопросов ...
Я думаю, что тебе нужно будет что-то вроде этого ...
# routes.rb
resources :users do
resources :schools
end
resources :schools
# app/controllers/schools_controller.rb
class SchoolsController < ApplicationController
def new
@user = User.find(params[:user_id])
@school = @user.build_school
end
def create
@user = User.find(params[:user_id])
@school = @user.build_school(params[:school])
if @school.save
# success...
else
# fail...
end
end
def edit
@school = School.find(params[:id])
end
def update
@school = School.find(params[:id])
if @school.update_attributes(params[:school])
# success
else
# fail
end
end
end
# app/views/schools/new.html.erb
<%= form_for([@user, @school]) do |f| %>
<!-- fields go here -->
<% end %>
# app/views/schools/edit.html.erb
<%= form_for([@user, @school]) do |f| %>
<!-- fields go here -->
<% end %>