Я пишу простое веб-приложение, которое мне нравится называть PMS (система управления проектами). В этом приложении у меня есть 2 модели Проекты и Студенты. Я установил (наверное... потому что я новичок) связь между этими двумя моделями. В проектах много студентов, но студент принадлежит к одному проекту (возможно, со временем это изменится).
Но моя проблема в том, чтобы заставить все работать вместе. Я не знаю, как я могу вставить новых студентов в форму нового проекта. Я все перепробовал и все равно ничего!
Вот мои исходные файлы:
Контроллер проектов:
class ProjectsController < ApplicationController
def show
@projects = Project.all
end
def create
@project = Project.new(project_params)
@project.status = "Waiting"
@project.save
redirect_to root_path
end
private
def project_params
params.require(:project).permit(:title, :lecturer)
end
end
Контроллер учащихся:
class StudentsController < ApplicationController
def create
@project = Project.find(params[:project_id])
@student = @project.students.create(params[:student])
@student.save
end
end
Модели:
class Project < ActiveRecord::Base
has_many :students
end
class Student < ActiveRecord::Base
belongs_to :project
end
Просмотр:
Добавить новый проект
<%= form_for :project, url: projects_path do |f| %>
<p>
<%= f.label :title %>
<%= f.text_field :title %>
</p>
<p>
<%= f.label :lecturer %>
<%= f.text_field :lecturer %>
</p>
<%= form_for([@project, @project.students.build]) do |s| %>
<p>
<%= s.label :name %><br />
<%= s.text_field :name %>
</p>
<% end %>
<p>
<%= f.submit %>
</p>
<% end %>
Маршруты:
RoRPMS::Application.routes.draw do
# You can have the root of your site routed with "root"
root 'projects#show'
resources :projects do
resources :students
end
end
save
необходимо проверять логический результат. Вы можете попробовать использоватьsave!
вместоsave
, это вызовет исключение, если объект не может быть сохранен, указывая на ошибку. - person Baldrick   schedule 11.12.2013