我的check_box帮助器出错了,不明白我做错了什么:
undefined method `prive' for #<PubContributeur:0xa63b8fc>
这是我的 app / models / pub_contributeur.rb :
class PubContributeur < ActiveRecord::Base
attr_accessible :nom, :prive
validates :nom, :presence => true
validates :nom, :length => { :in => 2..30 }, :uniqueness => { :case_sensitive => false }
end
我在控制器上使用了命名空间目录。 这是我的HAML视图 app / views / catalogs / pub_contributeurs / _form.html.haml :
= form_for [:catalogs, @pub_contributeur], :html => {:class => "formulaire-standard"} do |f|
= render :partial => 'shared/error_message', :locals => { :element => @pub_contributeur, :debut_erreur => 'Ce contributeur ne peut être enregistré'}
.groupe-champs
.champ
= f.label :nom
= f.text_field :nom, :class => 'input-width-8-col', :required => 'required'
.champ
= f.label :prive
= f.check_box :prive
有什么想法吗?
答案 0 :(得分:0)
我找到了解决方案!
当我更换
时 = f.check_box :prive
在我的_form.rb中使用我的实例变量上的调试行:
= debug @pub_container
我可以看到一些奇怪的东西:
--- !ruby/object:PubContributeur
attributes:
id:
nom:
description:
created_at:
updated_at:
我确实检查了我的db / migration /并发现了问题。 我的迁移文件创建了一个名为“ description ”的字符串字段,而不是名为“ prive ”的布尔字段。
如果我们对第一条错误消息有所了解。这非常奇怪,因为模型文件中的类确实有一个“prive”可访问的属性,可能会误导我们认为该类确实有“ nom ”和“ prive ”作为attibuts。
要了解正在发生的事情,我们必须拥有关于Rails和Ruby的高级知识。这来自 ActiveRecord :: Base 的继承。 场景背后的Rails魔力根据我的数据库pub_contributeurs表中列的名称为PubContributeur类创建属性。
我希望Rails错误消息可能更明确一些^^