我在使用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
任何人都可以帮助我吗?
答案 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控制台中对其进行测试。