Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 用于web表单验证的Rails国际化_Ruby On Rails 4_Internationalization_Rails I18n - Fatal编程技术网

Ruby on rails 4 用于web表单验证的Rails国际化

Ruby on rails 4 用于web表单验证的Rails国际化,ruby-on-rails-4,internationalization,rails-i18n,Ruby On Rails 4,Internationalization,Rails I18n,我正在开发一个应用程序,该应用程序将为部署该应用程序的各个国家/地区使用服务器端电话号码验证。例如,英国手机号码都包含11个以07开头的数字。在另一个国家,手机号码可能包含不同的位数,或者可能以不同的代码开头。我想使用这种特定于国家/地区的电话号码规范来验证web表单的输入。请注意,该应用程序将为每个国家/地区单独部署。因此,对于英国版本的申请,以099开头或仅包含10位数字的数字将引发提交错误(例如,“无效移动电话号码”),而德国版本的申请则根本不会引发错误 实现这种特定于区域设置的表单验证最

我正在开发一个应用程序,该应用程序将为部署该应用程序的各个国家/地区使用服务器端电话号码验证。例如,英国手机号码都包含11个以07开头的数字。在另一个国家,手机号码可能包含不同的位数,或者可能以不同的代码开头。我想使用这种特定于国家/地区的电话号码规范来验证web表单的输入。请注意,该应用程序将为每个国家/地区单独部署。因此,对于英国版本的申请,以099开头或仅包含10位数字的数字将引发提交错误(例如,“无效移动电话号码”),而德国版本的申请则根本不会引发错误


实现这种特定于区域设置的表单验证最优雅的方法是什么?我看了一下i18n gem,但我不确定它是否能轻松支持它。

如果您的验证是服务器端的,那么您可以看一下

我引述以下描述:
此Gem为Rails应用程序添加了一些有用的方法,用于验证、显示和保存电话号码。它使用了超级棒的假宝石

谢谢-很高兴知道这个宝石。是的,我的验证是服务器端的。但我想自己定义验证条件。问题是如何根据区域设置在验证条件之间切换?因此,实际上,这是一个超越国际电话格式的更广泛的问题。要验证,您可以执行以下操作
validate:your_fct
(注意“验证”不带“s”)。在函数
your_fct
中,您可以执行
case/when
来测试区域设置并使用适当的验证条件。在评论中给出更多的解释并不容易,但如果你愿意,我可以写一个答案。