Rails3中的嵌套属性

时间:2013-02-13 21:27:22

标签: ruby-on-rails-3.2 associations nested-attributes nameerror

我有一个应用程序,用户可以在其中构建一个项目,该项目最多可以有12个志愿者时间段,其他用户可以注册参与该项目。

创建项目时,会要求用户提供默认(开始)时间。应将此默认时间(Project_Times模型)写入数据库中begin_time table.its自己的表中的Projects,使用project_id参数来标识它所属的项目。

如果用户在创建@project后需要/需要,最多可以添加11个时段。

我很难让项目创建默认时间。这就是我所拥有的:

++ Projtime(projtime.rb)Model ++

class Projtime < ActiveRecord::Base
  attr_accessible :start_time, ...
  belongs_to :project
  default_scope :order => 'times.amount ASC'
end

++ Project(project.rb)Model ++

class Project < ActiveRecord::Base
  attr_accessible :title
  belongs_to :user
  has_one :project_category
  has_many :projtimes, :dependent => :destroy
    accepts_nested_attributes_for :projtimes

  def projtimes
    Projtimes.where('project_id=?', id)
  end
end

++ Projects Controller ++

class ProjectsController < ApplicationController
  ...
  def create
    @user = current_user
    @project = current_user.build_project(params[:project])
    @project.save
    @render 'edit'
  end

使用上面的语法自动将项目分配给用户。我试图复制相同的概念(考虑到每个项目有多次这样的事实)并为ProjtimesController提出这个概念:

class ProjtimesController < ApplicationController
  ...
  def create
    @project.projtimes.build
  end
end

但是,我得到NameError in ProjectsController#new

uninitialized constant Project::Projtimes

我认为通过设置belongs_tohas_many关联,这应该可行。

帮助任何人?

1 个答案:

答案 0 :(得分:1)

projtime.rb应以class Projtime而不是class Projime开头。

第二组眼睛: - )