我的申请表中有两张表
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中的所有东西都保存得很好 任何帮助都会提前感谢
答案 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="}