2012-02-22 84 views
0

好的,情況是:我試圖在同一個控制器上保留3個嵌套窗體。用戶和商店之間的關係運行良好,問題出現在商店和shop_type之間 所以,當我嘗試更新店編輯視圖中shop_type信息ActiveRecord :: AssociationTypeMismatch

吐出這個錯誤:ShopType(#70233617878800)預期,得到了

我搜索的ActiveSupport :: HashWithIndifferentAccess(#70233610891660)已經在api文檔中提到過這個問題,但對我來說,仍然是個謎,爲什麼shop_type會作爲散列傳遞。

謝謝。

ShopsController

def new 
    @user = current_user 
    @shop = @user.build_shop.shop_type 

    end 


    def create 
    @user = current_user 
     @shop = @user.build_shop(params[:shop]) 
      if @shop.save 
     flash.now[:success] = "blah" 
     render :edit 
     else 
     render :new 
    end 
    end 

    def edit 
@user = current_user 
    if @shop = current_user.shop 
    render :edit 
    else render :new 
    end 
end 


    def update 
     @user = current_user 
      @shop = current_user.shop 
     if @shop.update_attributes(params[:shop]) 
     flash.now[:success] = "blah" 
     render :edit 
     else 
     render :edit 
    end 
    end 
end 

ShopModel

belongs_to :user 
belongs_to :shop_type 

Shop_typeModel

has_many :shops 
    accepts_nested_attributes_for :shops 
attr_accessible :shops, :shop_attributes 

回答

1

我找出來,還不清楚爲什麼我必須使用:shop_type_id,而不是僅僅:shop_type上fields_for。

0

變化config/development.rb行:

config.cache_classes = true 

我不知道爲什麼這個錯誤發生,但這種方法解決了這個問題。但是你應該知道,它會緩存在您的軌道類的類和變化不能給任何效果

+0

有趣的是,我會這樣做,但對於生產而言,cache_classes設置爲true,無論如何謝天謝地。 – dcalixto 2012-02-22 18:46:40

+0

我認爲你的參數有問題。你能否顯示包含params [:shop]的內容? 'raise params [:shop] .inspect' – ka8725 2012-02-22 22:15:23

+0

雖然我會做人,但是ruby 1.9.3的調試器被竊聽並且安裝非常痛苦,直到他們發佈一個穩定的版本,我將繼續嘗試發現正在發生的事情。 – dcalixto 2012-02-23 00:56:53

相關問題