表单check_box帮助程序的未定义方法错误

时间:2012-12-06 13:18:46

标签: checkbox ruby-on-rails-3.2

我的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

有什么想法吗?

1 个答案:

答案 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错误消息可能更明确一些^^