好的,方案是:我试图在同一个控制器上保留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
答案 0 :(得分:1)
我发现,仍然不清楚为什么我必须在fields_for上使用:shop_type_id 而不是:shop_type 。
答案 1 :(得分:0)
config/development.rb
行的变化:
config.cache_classes = true
我不知道为什么会发生此错误,但此方法可以解决此问题。但是你应该知道它会缓存类和rails类中的变化不会产生任何影响