2012-10-17 43 views
0

代碼是:rails accepted_nested_attributes_for - 錯誤:Mysql2 ::錯誤:未知列的提議。在「where子句」

class Client < ActiveRecord::Base 
    ... 
    has_one :offer, :dependent => :destroy 
    accepts_nested_attributes_for :offer 
    ... 
end 

class Offer < ActiveRecord::Base 
    ... 
    belongs_to :client 
    ... 
end 


<%= simple_form_for [:admin, @client], :html=> {:multipart => true } do |f| %> 
..some input fields 
<%= f.simple_fields_for :offer, @client.new_record? ? Offer.new : "" do |o| %> 
..some input fields 

這適用於新的項目,但不更新。

Error: Mysql2::Error: Unknown column 'offers.' in 'where clause': DELETE FROM offers WHERE offers .`` = 718

當我更改客戶端模式:

accepts_nested_attributes_for :offer, :reject_if => lambda {|a| a[:name].blank?} 

該錯誤消息已不存在,它會更新客戶端表,但沒有報價表。

這是工作:

has_one :offer, :dependent => :destroy 
    accepts_nested_attributes_for :offer, allow_destroy: true 

    belongs_to :client 

    <%= f.simple_fields_for :offer, @client.new_record? ? Offer.new : @client.offer do |o| %> 

回答

1

首先,它似乎是合乎邏輯,它不進行更新工作,當你正在做的是:

<%= f.simple_fields_for :offer, @client.new_record? ? Offer.new : "" do |o| %> 

簡單的字段將嘗試創建字段爲「」,而它應該使用offer對象。 你可以解決這個問題有(有可能是一個更好的方式來做到這一點,這僅僅是一個解決方案,而不是解決方案)

<%= f.simple_fields_for :offer, @client.offer.new_record? ? Offer.new : @client.offer do |o| %> 

編輯:我認爲這將是更好地只能建提議,如果它不不存在,所以在這裏它看起來像什麼:

<% @client.build_offer if @client.offer.new_record? %> 
<%= f.simple_fields_for :offer do |o| %> 
+0

對不起。..贊!..並沒有更新要約表。 – Werner

相關問題