我们有多个控制器的新行动,这是我们在通过render :new
重用创建的窗体创建行动来显示验证错误消息。我相信这是进行simple_form和验证的方法。纠正我,如果我在这里错了。验证使用simple_form:击球创建后失去验证对象
我们也有一个通用的语言切换机制,重定向到current_url,使用不同的语言环境。
问题: 验证失败并且新窗体的第二次渲染失败后,语言选择会抛出一个错误(这对于张贴在这里会非常误导)。问题是创建操作需要经过验证的对象,我们的语言选择不会再次传递给当前网址。
你会如何解决这个问题?
我们可以尝试教我们的语言切换器关于“创建”,并让它发送另一个带有相同参数的帖子请求,但这看起来很糟糕。在我们的小帮手中必须有很多逻辑,我们将在哪里存储对象(至少有一种对象没有被持久化)? 有人提到(ab-)使用flash消息重新创建对象,但它是一个巨大的形式,最多可以有50个验证,我猜这个大小很丑。 在这些情况下将对象存储在会话中,并让助手再次发布对象(如果存在的话)可能会起作用。我最喜欢这个,但是它的感觉也不错。
我们可以尝试让simple_form使用“new”动作而不是仅仅渲染“new”,但这看起来很糟糕。
我们可以禁用语言切换创建完全行动,并警告说这一步必须在选定的语言完成。
你有什么意见,其他建议吗?我会很感激。
感谢, 安迪