url_field接受非http://或https://链接

时间:2017-03-21 07:27:23

标签: html ruby-on-rails ruby

我尝试在表单中使用url_field标记。

我应该可以输入非http://个网址,例如我需要输入www.google.com。但是rails url_field不允许这样做。

有什么办法吗?

这是我目前的设置:

<%= f.url_field :english_link,  :class => "form-control", :placeholder =>"Type your message", :rows => "4", maxlength: 130, spellcheck: true %>

我也尝试在f.text_field中使用正则表达式,但它无效。

<%= f.text_field :english_link, pattern: /(https?:\/\/(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,})/, :class => "form-control", :placeholder => "Enter URL Link Here" %>

我查看了正则表达式是否在rubular.com中有效,并且它正在运行。

2 个答案:

答案 0 :(得分:0)

将在浏览器端评估模式。很好的解决方案,但它无处不在(取决于浏览器)。不确定正则表达式是否与Ruby完全相同,也许你应该交叉引用taht。如果正则表达式遵循所需的语法,请检查HTML输出(也许你应该用“”替换//)

https://www.w3schools.com/tags/att_input_pattern.asp

答案 1 :(得分:0)

在您的模型中,例如Posts.rb,假设它包含字段english_link

因此,在您的模型Post.rb中,您可以执行以下检查:

validates_format_of : english_link, :with => /^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/ix