2016-11-30 109 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