2013-12-11 115 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