的ActiveRecord :: AssociationTypeMismatch

时间:2012-02-22 18:10:48

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1

好的,方案是:我试图在同一个控制器上保留3个嵌套表单。用户和商店之间的关系工作顺利,商店和shop_type之间出现问题 因此,当我尝试在商店编辑视图

中更新shop_type信息时

吐出此错误: ShopType(#70233617878800)预期,获得ActiveSupport :: HashWithIndifferentAccess(#70233610891660)

我已经在api docs上搜索了这个,但对我来说仍然是一个谜,为什么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

2 个答案:

答案 0 :(得分:1)

我发现,仍然不清楚为什么我必须在fields_for上使用:shop_type_id 而不是:shop_type

答案 1 :(得分:0)

config/development.rb行的变化:

config.cache_classes = true

我不知道为什么会发生此错误,但此方法可以解决此问题。但是你应该知道它会缓存类和rails类中的变化不会产生任何影响