我有一张表格:
<%= form_for(:report_main, :url => {:action => 'exporttoxiccreate'}) do |f| %>
<%= collection_select(:waste, :code, Waste.find_all_by_istoxic(false), :id, :code, :include_blank => '') %>
<%= f.check_box(:q_pripadnost) %>
<%= f.text_field(:amount) %>
<% end %>
和控制器中的代码:
def exporttoxiccreate
@report = ReportMain.new
@reportexport = ReportExport.new
@reportparam = params[:report_main]
@report.waste_id = @reportparam.waste.code
@report.amount = @reportparam.amount
if @report.save
@reportexport.report_main_id = @report.id
else
redirect_to(:action => 'exporttoxicnew')
end
@reportexport.q_pripadnost = @reportparam.q_pripadnost
if @reportexport.save
redirect_to(:action => 'show', :id => @reportexport.id)
else
redirect_to(:action => 'exporttoxicnew')
end
end
我想保存在两个表中,在这个表单的两个对象数据中,我需要将params分开来进行操作。我试过这个:
@reportexport.q_pripadnost = @reportparam.q_pripadnost
我想在@reportexport中设置q_pripadnost字段,其中包含一些来自param的值。
哪里出错?
答案 0 :(得分:1)
当你从Rails中的一个表单中获取params时,它会以hash形式出现。例如:
params[:report_main][:waste]
params[:report_main][:amount]
因此,当您调用@reportparam = params[:report_main]
时,您将@reportparam
设置为哈希值,但之后您尝试将其用作对象。例如,使用@reportparam.q_pripadnost
。
@reportparam[:q_pripadnost]
您可以通过临时更改操作以显示变量的文本版本来仔细查看变量,例如:
def exporttoxiccreate
@reportparam = params[:report_main]
render :text => @reportparam.to_yaml
end