客户端表单验证栏

时间:2019-01-16 04:59:53

标签: ruby-on-rails ruby regex format

问题:我的客户端栏杆表单输入格式验证不适用于正则表达式的设置方式。

我有以下Rails表单输入:

<%= form.text_field :twitter_link, 
    class: "form-control", 
    required: true, 
    pattern: "^(?:https?:\/\/)?(?:(?:www|m)\.)?twitter\.com\/\w+\/status\/\d+(?:\/\/?)?$", 
    title: "Twitter Comment URL" %>

当我输入正确的格式时,它将无法验证,并显示“输入正确的格式”消息。

我模型中的以下正则表达式可验证该参数:

/\A^(?:https?:\/\/)?(?:(?:www|m)\.)?twitter\.com\/\w+\/status\/\d+(?:\/\/?)?\z/

如您所见,我在模型验证端进行了一些更改,以查看它是否有效。我尝试了其他一些方法,但没有解决。

可以很好地进行模型验证,但不能在客户端工作。我需要更改使其正常工作吗?

我正在进行客户端验证,因此可以为单个text_field提供自定义消息,而无需刷新或重定向。任何人,由于我有3种深度的嵌套表单,因此遇到了使警报显示为flash.now的问题,而无需使用普通的flash重新加载页面。不知道是什么问题,但这似乎是一个不错的选择。

如何解决此问题,使正则表达式可以与输入的text_field一起使用?

1 个答案:

答案 0 :(得分:0)

使用单引号而不是双引号似乎可以解决问题。

<%= form.text_field :twitter_link, 
    class: "form-control", 
    required: true, 
    pattern: '^(?:https?:\/\/)?(?:(?:www|m)\.)?twitter\.com\/\w+\/status\/\d+(?:\/\/?)?$', 
    title: "Twitter Comment URL" %>

不知道为什么我以前没有尝试过,因为过去我遇到过双重和单一的类似问题