J'ai report_controller où j'ai deux objets, @report et @reporte, et je veux enregistrer les deux objets dans la base de données. Lorsque la validation échoue, je souhaite que les champs soient remplis sous forme rendue.Remplir le formulaire après la validation échoue
Je ne peux pas utiliser seulement @report = ReportMain.new(params[:report_main])
parce que j'ai deux objets et un seul objet params.
J'utilise exportnew action pour montrer le formulaire, et encreate pour enregistrer ce formulaire.
Il existe un moyen simple d'obtenir un formulaire rempli?
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
View commence par (c'est énorme HTML):
<%= form_for(:report_main, :url => {:action => 'encreate'}) do |f| %>