2011-03-05 123 views
1

我有report_controller,其中有两个对象@report和@reporte,我想将两个对象保存在数据库中。当验证失败时,我想要以渲染的形式填充字段。验证失败后填充表单

我不能只用@report = ReportMain.new(params[:report_main]),因为我有两个对象,只有一个params对象。

我使用exportnew动作来显示表单,并用encreate来保存这个表单。

有一些简单的方法来填充表格?

ReportController:

class ReportController < ApplicationController 
    before_filter :authenticate_user! 
    before_filter :load 
    layout "application" 

    def load 
    @company = Company.find_by_id(current_user.company_id) 
    @date = Date.today 
    @report = ReportMain.new 
    @reporte = ReportE.new 
    end 

    def index 
    list 
    render("list") 
    end 

    def list 
    @reports = ReportMain.all 
    end 

    def exportnew 
    render("ennew") 
    end 

    def encreate 

    @report = ReportMain.new 
    @reporte = ReportE.new 
    @reportparam = params[:report_main] 


    @report.waste_id = params[:waste][:code] 
    @report.warehouse_id = Warehouse.find_by_user_id(current_user.id).id 
    @report.user_id = current_user.id 
    @report.company_id = current_user.company_id 
    @report.amount = @reportparam[:amount] 
    @report.isimport = false 
    @report.isfinished = false 
    @report.reportnumber = ReportMain.where(:company_id => current_user.company_id).count.to_i+1 
    if @report.save 
     @reporte.report_main_id = @report.id 
    else 
     @report_main = @report 
     render("etnew") 
     return 
    end 

    @reporte.vrstaotpada = params[:vrstaotpada] 
    @reporte.nacinpakovanja = params[:nacinpakovanja] 
    @reporte.ispitivanjebroj = @reportparam[:ispitivanjebroj] 
    @reporte.datumispitivanja = @reportparam[:datumispitivanja] 
    @reporte.q_pripadnost = @reportparam[:q_pripadnost] 
    @reporte.datumpredaje = @date 

    if @reporte.save 
     redirect_to(:action => 'show', :id => @reporte.id) 
     flash[:notice] = "Izveštaj je uspešno kreiran." 
    else 
     @report_main = @report 
     render("etnew") 
    end 
    end 



    def show 
    @report = ReportMain.find(params[:id]) 
    @warehouse = @report.warehouse.name 
    end 

end 

查看开头(这是巨大的HTML):

<%= form_for(:report_main, :url => {:action => 'encreate'}) do |f| %> 

回答