rails 3中的嵌套参数

时间:2012-02-17 11:27:40

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

我有两种模式: - a)A b)B

模型A看起来像这样: -

class A < ActiveRecord::Base

has_many :bs ,:dependent => :destroy   
validates :name, :presence=>true
accepts_nested_attributes_for :bs
attr_accessible :bs_attributes

end

模型B看起来像这样

class PlanDay < ActiveRecord::Base

belongs_to :a
attr_accessible :a_attributes

end

在我看来,我使用了form_for和fields_for,但我对我得到的参数感到困惑: -

 Parameters: {"a"=>{"name"=>"swsdw" , "bs_attributes"=>{"0"=>{"friday"=>"true", "wednesday"=>"", "tuesday"=>"", "sunday"=>"true", "saturday"=>"true", "monday"=>"", "thursday"=>""}}

这是什么,我在bs_attributes中获得了什么?这是我无法在'bs'表中保存我的日期值的原因吗?

我将此保存如下: -      @a = A.new(params [:a])

这样可以保存我的两个模型都被保存,但参数中存在的所有日期都会以null保存。

1 个答案:

答案 0 :(得分:2)

Ahas_manyB的关系。因此,bs_attributes实际上是一个包含多个Bs的数组。因此,0表示第一个B。如果您已经通过了两个Bs,那么上面会有0,另一个哈希以1开头。

我不认为0导致B具有空值。并且0不会导致问题,因为您在保存bs时可以保存多个A

您说“我将此保存为以下内容: - @a = A.new(params[:a])"。您是否保存@a或者您忘记将其包含在您的问题中?之后添加@a.save!。 (!)会在未保存@a的情况下向您显示失败的验证。