在 rails 中进行验证后维护表单中的数据
To maintain data in a form after doing a validation in rails
我正在验证我的表单,但发送错误消息会清除字段,我希望保留数据以便我只完成我需要的那些
我在控制器中有这段代码:
def create
mensaje=""
@farm = Farm.new(params[:farm])
if @farm.nombre=="" || !valid_prescence?(@farm.nombre)
mensaje="Favor de capturar los datos que se encuentran como requeridos"
else
@buscar=Farm.where(nombre: params[:farm][:nombre], tipo: params[:farm][:cliente_id])
if @buscar.any?
mensaje="La finca "+params[:farm][:nombre]+" ya se encuentra registrada en el sistema, favor de verificar."
end
end
respond_to do |format|
if mensaje !=""
format.html { redirect_to new_farm_path, notice: mensaje }
format.json { render json: @farm.errors, status: :unprocessable_entity }
else
if@farm.save
format.html { redirect_to @farm, notice: 'Finca creada correctamente.' }
format.json { render json: @farm, status: :created, location: @farm }
else
format.html { render action: "new" }
format.json { render json: @farm.errors, status: :unprocessable_entity }
end
end end end
在出现异常的那一刻returns我进入了表格但字段为空
我想要的是发送消息后能够保留数据
This is part of the form after the validation
只要您在 mensaje
中输入内容,响应就会重定向到 new
操作,这就是表单为空的原因。你必须清除控制器,那些验证不属于那里,我只为你做了一些工作。
def create
@farm = Farm.new(params[:farm])
if @farm.nombre == "" || !valid_prescence?(@farm.nombre)
flash[:notice] = "Favor de capturar los datos que se encuentran como requeridos"
else
@buscar = Farm.where(nombre: params[:farm][:nombre], tipo: params[:farm][:cliente_id])
if @buscar.any?
flash[:notice] = "La finca #{params[:farm][:nombre]} ya se encuentra registrada en el sistema, favor de verificar."
end
end
respond_to do |format|
if @farm.save
format.html { redirect_to @farm, notice: 'Finca creada correctamente.' }
format.json { render json: @farm, status: :created, location: @farm }
else
format.html { render action: "new" }
format.json { render json: @farm.errors, status: :unprocessable_entity }
end
end
end
要在表单上显示错误,请查看 or http://railscasts.com/episodes/211-validations-in-rails-3
验证不属于控制器。将您的验证放入模型(业务逻辑)中。这是关于验证的优秀指南:http://guides.rubyonrails.org/active_record_validations.html。
之后,您的控制器将减少并仅决定 if @farm.save
(如 https://whosebug.com/users/336392/thomas-r-koll 所示)。
def create
@farm = Farm.new(params[:farm])
respond_to do |format|
if @farm.save
format.html { redirect_to @farm, notice: 'Finca creada correctamente.' }
format.json { render json: @farm, status: :created, location: @farm }
else
format.html { render action: "new" }
format.json { render json: @farm.errors, status: :unprocessable_entity }
end
end
end
在视图中看到您的表单代码也很有趣。您应该知道所有值以及来自验证的错误消息都在您的@farm 实例变量中。如果您正确编写表单(即遵循标准 Rails 约定),它将自动显示错误和旧值。
我正在验证我的表单,但发送错误消息会清除字段,我希望保留数据以便我只完成我需要的那些
我在控制器中有这段代码:
def create
mensaje=""
@farm = Farm.new(params[:farm])
if @farm.nombre=="" || !valid_prescence?(@farm.nombre)
mensaje="Favor de capturar los datos que se encuentran como requeridos"
else
@buscar=Farm.where(nombre: params[:farm][:nombre], tipo: params[:farm][:cliente_id])
if @buscar.any?
mensaje="La finca "+params[:farm][:nombre]+" ya se encuentra registrada en el sistema, favor de verificar."
end
end
respond_to do |format|
if mensaje !=""
format.html { redirect_to new_farm_path, notice: mensaje }
format.json { render json: @farm.errors, status: :unprocessable_entity }
else
if@farm.save
format.html { redirect_to @farm, notice: 'Finca creada correctamente.' }
format.json { render json: @farm, status: :created, location: @farm }
else
format.html { render action: "new" }
format.json { render json: @farm.errors, status: :unprocessable_entity }
end
end end end
在出现异常的那一刻returns我进入了表格但字段为空 我想要的是发送消息后能够保留数据
This is part of the form after the validation
只要您在 mensaje
中输入内容,响应就会重定向到 new
操作,这就是表单为空的原因。你必须清除控制器,那些验证不属于那里,我只为你做了一些工作。
def create
@farm = Farm.new(params[:farm])
if @farm.nombre == "" || !valid_prescence?(@farm.nombre)
flash[:notice] = "Favor de capturar los datos que se encuentran como requeridos"
else
@buscar = Farm.where(nombre: params[:farm][:nombre], tipo: params[:farm][:cliente_id])
if @buscar.any?
flash[:notice] = "La finca #{params[:farm][:nombre]} ya se encuentra registrada en el sistema, favor de verificar."
end
end
respond_to do |format|
if @farm.save
format.html { redirect_to @farm, notice: 'Finca creada correctamente.' }
format.json { render json: @farm, status: :created, location: @farm }
else
format.html { render action: "new" }
format.json { render json: @farm.errors, status: :unprocessable_entity }
end
end
end
要在表单上显示错误,请查看
验证不属于控制器。将您的验证放入模型(业务逻辑)中。这是关于验证的优秀指南:http://guides.rubyonrails.org/active_record_validations.html。
之后,您的控制器将减少并仅决定 if @farm.save
(如 https://whosebug.com/users/336392/thomas-r-koll 所示)。
def create
@farm = Farm.new(params[:farm])
respond_to do |format|
if @farm.save
format.html { redirect_to @farm, notice: 'Finca creada correctamente.' }
format.json { render json: @farm, status: :created, location: @farm }
else
format.html { render action: "new" }
format.json { render json: @farm.errors, status: :unprocessable_entity }
end
end
end
在视图中看到您的表单代码也很有趣。您应该知道所有值以及来自验证的错误消息都在您的@farm 实例变量中。如果您正确编写表单(即遵循标准 Rails 约定),它将自动显示错误和旧值。