我正在使用Formtastic 2作为嵌套表格 - 我有菜单和餐饮模式,菜单有很多餐点,每餐都属于一个菜单。 我将菜单添加到菜单显示操作中,就在已经关联的菜单列表下方。
如果验证成功,创建餐饮工作正常,我转到菜单显示操作再次列出列表中创建的餐点。
但是当用餐没有得到验证并且我使用适当的flash消息转发到菜单show动作时,我真的想用之前提交的数据填写表单并在其旁边呈现错误。
我试过这个重定向:
redirect_to(menu_path(menu,@meal), :alert => 'The meal was not created')
但是我无法获得这个变量并以这种方式将其传回给表单,请求本身就是一个只有菜单ID的GET请求。
答案 0 :(得分:2)
您不应在验证错误后重定向,因为您将失去所有状态。验证失败后直接使用旧模板。有点问题是你需要使用flash.now[:alert]
,所以它不会延续到下一页。
通常你会有结构:
def new
@meal = Meal.new
end
def create
@meal = Meal.new(params[:meal])
if @meal.save
flash[:notice] = "Meal was created"
redirect_to menu_path(menu, @meal)
else
flash.now[:alert] = "The meal was not created"
render :new
end
end