2013-12-11 78 views
0

我在写一个简单的Web应用程序,我喜欢称之为PMS(项目管理系统)。它这个程序我有2个模型项目学生。我已经设定(我猜...因为我是一个新手)这两个模型之间的关联。项目有许多学生,但学生属于一个项目(也许它会随着时间而改变)。无法创建form_for关联模型

但我的问题是让所有东西一起工作。我不知道如何在新项目表格中插入新学生。我已经尝试了一切,但仍然没有!

这里是我的源文件:

项目控制器:

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 
+0

当使用'save',你必须检查布尔结果。您可以尝试使用'save!'而不是'save',如果无法保存对象,则会引发异常,指出错误。 – Baldrick

+0

奥奇,我明白了,但它仍然不是我正在应对的问题... – cojoj

回答

0

您可以使用 “nested_form” 创建与学生项目以及

<%= nested_form_for @project do |f| %> 
    <p> 
     <%= f.label :title %> 
     <%= f.text_field :title %> 
    </p> 
    <p> 
     <%= f.label :lecturer %> 
     <%= f.text_field :lecturer %> 
    </p> 
     <%= fields_for :students do |s| %> 
      <p> 
      <%= s.label :name %><br /> 
      <%= s.text_field :name %> 
      </p> 
     <% end %> 
     <%= f.link_to_add "Add new student", :students %> 
    <p> 
     <%= f.submit %> 
    </p> 
<% end %> 

在项目模型添加

accepts_nested_attributes_for :students 
+0

我仍然无法得到它的工作.... – cojoj

+0

有你在gem文件中添加了“nested_form”gem如果是的话那么你有什么错误越来越多了? – jbmyid