foreignkey未保存在嵌套模型轨道中

时间:2013-12-06 13:31:55

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

我的申请表中有两张表

rfp.rb

            has_many :rfp_hors
            attr_accessible :rfp_hors_attributes
            accepts_nested_attributes_for :rfp_hors, :allow_destroy => true

rfp_hor.rb

      attr_accessible   :numberofmenu_est_hours,
     :numberofmenu_act_hours,
     :browser_est_hours,
     :browser_act_hours,
     :numberofpage_est_hours,
     :numberofpage_act_hours,
     :rfp_id

belongs_to :rfp

当我提交rfp_hors时,参数在控制台

中显示如下
              Parameters: {"rfp_hor"=>{"ecommerce_est_hours"=>"7", "rfp_id"=>"13", "designcomplexity_est_hours"=>"3", "browser_est_hours"=>"4", "framworks_est_hours"=>"5", "cms_est_hours"=>"6"}, "utf8"=>"✓", "commit"=>"Create Rfp hor", "authenticity_token"=>"XXgQlufpBP2lvcde/EiFIx93aM5Ov47MNFqsCkLun2Y="}

和控制器 rfps.rb

    def show
        @rfp = Rfp.find(params[:id])
    @rfp_hor = RfpHor.new
    end

rfp_hors.rb

     def create
              @rfp_hor = RfpHor.create(params[:rfp_hor])

respond_to do |format|
  if @rfp_hor.save
   format.html { redirect_to rfp_url(@rfp_hor.rfp_id), :notice => 'rfp hour was successfully created.' }
    format.json { render :json => @rfp_hor, :status => :created, :location => @rfp_hor }
  else
    format.html { render :action => "new" }
    format.json { render :json => @rfp_hor.errors, :status => :unprocessable_entity }
  end
end

rfp_hors中databse aceept rfp_id中的所有东西都保存得很好 任何帮助都会提前感谢

1 个答案:

答案 0 :(得分:1)

你的问题是因为你正在初始化变量@rfp_hor作为rfps控制器中的新独立对象,你何时只初始化varbiale @rfp,你可以尝试这种方式:

def edit 
    @rfp = Rfp.find(params[:id])
end

关于同一控制器的更新操作,您无需进行任何更改,并且可以将此代码放在表单中:

<%= form_for @rfp do |f| %>
   <%= f.fields_for : rfp_hors do |item| %>
      <%= item.field_one :field %>
      <%= item.field_two :field %>
   <% end %>
<% end %>

通过这种方式,您可以在更新操作中的同一个控制器中接收params作为嵌套表单,并且您可以显示此模式的参数:

Parameters: {"rfp"=>{"rfp_hors_attributes"=>{"ecommerce_est_hours"=>"7", "rfp_id"=>"13", "designcomplexity_est_hours"=>"3", "browser_est_hours"=>"4", "framworks_est_hours"=>"5", "cms_est_hours"=>"6"}}, "utf8"=>"✓", "commit"=>"Create Rfp hor", "authenticity_token"=>"XXgQlufpBP2lvcde/EiFIx93aM5Ov47MNFqsCkLun2Y="}