我有rails 5.0.1 app(App 1)工作,它使用另一个Rails API进行数据库操作。 应用1未使用有效记录,但使用flexirest进行Api呼叫。
调用create或update方法时,所有数据都以json格式发送到rails api。 我想当api抛出任何错误时,它应该在rescue块中捕获,并且用户在提交点击之前输入的数据应该在使用render进行救援后渲染:edit(用于更新)或render:new(用于创建)
这是我的代码
def update
respond_to do |format|
begin
if @booking.update({id: @booking.booking.id, booking: booking_params})
format.html { redirect_to excel_front_innstats_path, notice: display_notice(t("label.detailed_reservation.reservation")) }
else
format.html { render :edit }
end
rescue => e
#here assign the booking object with user entered data,
#so that the form will not loose the data
#if exception occurs
flash_error_message(:error, e.result)
format.html { render :edit }
end
end
end
答案 0 :(得分:0)
这可以轻松实现,您需要在 @.html 的 edit.html.erb 形式中进行一些更改。
渲染 edit.html.erb 时,请务必检查 params hash中是否存在相应的输入字段值。如果值存在,则从params中分配字段值,否则从@booking中分配字段值。
例如编辑(更新):
<input type='text' name='booking_name' value="<%= params[:booking_name] ? params[:booking_name] : @booking.booking_name%>"/>
例如New(Ureate):
<input type='text' name='booking_name' value="<%= params[:booking_name]%>"/>
我希望你有办法。