我使用Formtastic 2作为嵌套形式-我有一个菜单和一个套餐模型,菜单有很多套餐,每一餐都属于一个菜单。我将套餐表单添加到菜单显示操作中,就在已经关联的套餐列表的正下方。
如果验证成功,创建套餐工作正常,我将再次转到菜单show action,在列表中列出所创建的套餐。
但是,当用餐没有通过验证,并且我再次使用适当的flash消息显示菜单show action时,我真的希望在表单中填入之前提交的数据,并在其旁边呈现错误。
我尝试了这个重定向:
redirect_to(menu_path(menu,@meal), :alert => 'The meal was not created')但是我不能以这种方式获取meal变量并将其传递回表单,请求本身就是一个只有菜单id的get请求。
发布于 2011-10-09 05:23:11
你不应该在验证错误后重定向,因为你会丢失所有的状态。仅在验证失败后直接使用旧模板。一个小问题是,你需要使用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
endhttps://stackoverflow.com/questions/7699559
复制相似问题