Rails / Mongoid接受具有继承的模型的嵌套属性

时间:2013-06-17 00:38:40

标签: ruby-on-rails mongoid

如何接受使用继承的模型的嵌套属性?

Rails 3.2,Mongoid 3.1

class User
    include Mongoid::Document
    include Mongoid::Timestamps

    field :name, type: String

    attr_accessible :name

    embeds_many :cards
    attr_accessible :cards_attributes
    accepts_nested_attributes_for :cards

end

用户类嵌入了许多类型的卡片。

class Card
    include Mongoid::Document
    include Mongoid::Timestamps

    embedded_in :user
end

class HealthCard < Card
    field :number,      type: String

    attr_accessible :expiry_date, :number
end

class StudentCard < Card
    field :expiry_date, type: Date
    field :number,      type: String
    field :dept,        type: String


    attr_accessible :expiry_date, :number, :dept
end

使用以下表格

= form_for @user do |user_form|

    = user_form.fields_for :health_cards, @health_card do |hc_form|
        = hc_form.text_field :number

    = user_form.submit 'Next'

提交时,我会观察以下参数

{"user"=>{"health_cards"=>{"number"=>"6564 - 082 - 649 - AM"} }, "utf8"=>"✓", "_method"=>"put", "authenticity_token"=>"C0DIKNbccfDQ=", "commit"=>"Next", "action"=>"update", "controller"=>"person_steps"}

1 个答案:

答案 0 :(得分:1)

问题在于表单,应该是user_form.fields_for :cards而不是:health_cards

以下是更正后的版本

= form_for @user do |user_form|

    = user_form.fields_for :cards, @health_card do |hc_form|
        = hc_form.text_field :number

    = user_form.submit 'Next'
相关问题