无法保存动作创建

时间:2013-05-20 18:27:30

标签: ruby-on-rails mongoid

我在使用rails + mongoid时存在一些问题,以节省动作创建

我写了关系:

class SchoolClass
  include Mongoid::Document
  include Mongoid::MultiParameterAttributes

  has_one :teachers

  field :nome, type: String

  validates_presence_of :nome, :message => 'Nao pode ser vazio'
end

class Teacher
  include Mongoid::Document
  include Mongoid::MultiParameterAttributes
  belongs_to :school_class

  field :nome
  field :nascimento, :type => Date
  field :email
  field :senha
end

我正式创建了学校课程。

展示学校班级:

    <%= f.input :school_class, :collection => SchoolClass.all, label_method: "nome", include_blank: false %><br />

TeachersController是:

  def create
    @teacher = Teacher.new(params[:teacher])

    respond_to do |format|
      if @teacher.save
        format.html {redirect_to(teachers_path, :notice => 'Professor cadastrado com sucesso')}
        format.json { head :no_content }
      else
        format.html {render :action => :new}
        format.json { render json: @teacher.errors, status: :unprocessable_entity }
      end
    end
  end

我不知道如何保存参考。 浏览器为我辩护:

uninitialized constant SchoolClas

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:0)

在SchoolClass中,您应该:

has_one :teacher

此外,如果您的错误消息是正确的,看起来您可能在某处错误地键入了SchoolClass作为SchoolClas(错过了最终的's')。

答案 1 :(得分:0)

将表单代码修改为:

<%= f.input :school_class_id, :collection => SchoolClass.all, label_method: "nome", include_blank: false %><br />

答案 2 :(得分:0)

Mongoid的文档声明“模型类名称不能以”s结尾,因为它将被视为单词“的复数形式”,它建议添加自定义变形器。

我遇到类似情况,类XyzMass被截断为XyzMas。 Mongo正在将其转换为相应的表名 - xyz_mass - 并在其上调用String#singularize

尝试将以下内容放入config/initializers/inflections.rb

ActiveSupport::Inflector.inflections do |inflect|
  inflect.singular /(school_class)$/i, '\1'
end

您可以使用'school_class'.singularize在Rails控制台中对其进行测试。