Rails + React +实时验证

时间:2018-08-31 13:43:44

标签: ruby-on-rails reactjs

我有Rails 5 + React应用程序。在此应用程序中,我想介绍验证。

假设我有一个产品模型,其价格必须大于0且小于5或等于20。

在创建产品模型时,我有两个实例:

  1. 所有内容提交后。我将在rails中进行验证,并将发回一条消息以进行响应,以告诉React部分是可以的200,否则,此实体不能正常422 +可以映射到表单字段的json格式的错误
  2. 用户实际输入时。假设用户为大于20的价格介绍了55,所以我想立即显示输入的价格无效。

这两个对我来说都很清楚如何做。我在React端对表单进行了一些实时验证,并在等待提交表单时进行了一些后端验证。问题是我必须在react和rails中都包含验证数据(在这种情况下为数字0、5、20)。

我一直在想,也许我可以将这些“魔术”数字放在yml文件中,然后导出它们以作出反应。

这是正确的方法吗?是否有人对如何存储必须同时包含在react和rails中的这些值有一个更好的主意?

2 个答案:

答案 0 :(得分:2)

如果使用Formik这样的表单系统,则可以通过ssr提供动态验证脚本。无论如何,通常的管理方式是保持验证独立

答案 1 :(得分:1)

如果Rails应用程序提供HTML,则将验证作为道具或数据属性传递给React,如果是单页应用程序(SPA),则传递给JSON。

继续验证服务器端以及执行仅客户端验证是危险的,因为可以通过直接服务器调用绕过它。

如果要传递带有约束的JSON,则可能需要考虑一种模仿可用html5 validation attributes或自定义验证名称的结构。

{
  "product": {
    "attributes": {
      "name": {
        "type":"string",
        "pattern":"[A-Za-z]",
      },
      "price": {
        "type":"decimal",
        "max":"20.00",
        "min":"5.00",
      },
    }
  }
}