2016-11-30 108 views
0
Rails 3.2 

在我的模型/ lead_billing.rb,我有以下几点:未知属性

attr_accessible :ticket_update_type 

ticket_update_type不是在MySQL表,我使用的提交表单作为隐藏领域。

这是提交表单(苗条):

= form_for(LeadBilling.new, url: lead_billing_path) do |f| 
    .form-horizontal-column.customer-info 
    .form-group 
     = f.label :pre_tax_total 
     = f.text_field :pre_tax_total, maxlength: 50 
     = f.error_message :pre_tax_total 
    .form-group 
     = f.label :post_tax_total 
     = f.text_field :post_tax_total, maxlength: 50 
     = f.error_message :post_tax_total 
    .form-group 
     = f.hidden_field :ticket_update_type, value: "save_lead_billing" 
    .form-horizontal-column.customer-info 
    .actions = f.submit 'Save Lead Billing Details' 
.clear 

当我填写它,并点击提交按钮,我得到的“出事了”画面。通过日志文件看,我看到了以下错误消息:

unknown attribute: ticket_update_type from user 

随着更多的细节:

/home/app/.rvm/gems/ruby-2.1.5/gems/activerecord-3.2.18/lib/active_record/attribute_assignment.rb:88:in `block in assign_attributes' 
/home/app/.rvm/gems/ruby-2.1.5/gems/activerecord-3.2.18/lib/active_record/attribute_assignment.rb:78:in `each' 
/home/app/.rvm/gems/ruby-2.1.5/gems/activerecord-3.2.18/lib/active_record/attribute_assignment.rb:78:in `assign_attributes' 
/home/app/.rvm/gems/ruby-2.1.5/gems/activerecord-3.2.18/lib/active_record/base.rb:498:in `initialize' 
/home/app/app/controllers/admin/lead_billings_controller.rb:42:in `new' 
/home/app/app/controllers/admin/lead_billings_controller.rb:42:in `create' 

所以,这是一个初始化的问题?但是我已经在lead_billing模型中声明了它。

任何想法?

回答

1

如果ticket_update_type不LeadBilling模型的一部分,那么你不应该在你的表单模型配合它,而不是:

= f.hidden_field :ticket_update_type, value: "save_lead_billing" 

你必须将它定义作为hidden_field_tag

= hidden_field_tag :ticket_update_type, value: "save_lead_billing" 

现在,在你的控制器,你可以要求它通过params[:ticket_update_type],您不必为LeadBilling模型添加任何不必要的访问器

1

尝试

attr_accessor(:ticket_update_type) 
+0

为什么选择? – EastsideDeveloper

+0

他们是不需要的,但我更喜欢他们,因为我认为他们更容易阅读 – Fallenhero

+0

主要是'accessor'不可访问' – Fallenhero