【发布时间】:2013-05-27 09:59:08
【问题描述】:
我们有一个由多个控制器的 new 操作创建的表单,我们通过 create 操作中的render :new 重复使用它来显示验证错误消息。我相信这是 simple_form 和验证的方法。纠正我,如果我在这里错了。
我们还有一个通用的语言切换机制,它重定向到 current_url,具有不同的语言环境。
问题: 在验证失败和新表单的第二次呈现后,语言选择会引发错误(在此处发布会非常误导)。问题是 create 操作需要经过验证的对象,我们的语言选择不会再次将其传递到当前 url。
你会如何解决这个问题?
我们可以尝试教我们的语言切换器“创建”并让它发送另一个具有相同参数的帖子请求,但这看起来很糟糕。我们的小助手中必须有很多逻辑,我们将在哪里存储对象(至少其中一种根本不持久)? 有人提到(ab-)使用 Flash 消息重新创建对象,但它是一个巨大的表单,最多有 50 个验证,而且我猜这个尺寸更难看。 在这些情况下将对象存储在会话中并让助手再次发布对象(如果存在)可能会起作用。我最喜欢这个,但感觉也很差。
我们可以尝试让 simple_form 使用“new”动作而不是仅仅渲染“new”,但这看起来真的很糟糕。
我们可以完全禁用 create 操作的语言切换,并发出警告说这一步必须以所选语言完成。
您有什么意见或其他建议吗?我将不胜感激。
谢谢, 安迪
【问题讨论】:
标签: ruby-on-rails-3 internationalization validation simple-form