regex - 我在 ruby 中的 form_tag 如何接受我的 def REGEX(在应用程序助手中)?
问题描述
我的页面中有一个电子邮件搜索栏。当我将+
字符放入 mytext_field
时,找不到电子邮件。
例如,搜索test123@gmail.com
作品,但搜索test+123@gmail.com
不起作用。
我的表单代码:
<%= form_tag users_path, :method => 'get', local: true, class: 'ui form' do %>
<div class="fields">
<div class="field">
<%= label_tag "Search by email:" %>
<%= text_field_tag :search, params[:search] %>
</div>
<div id="search-bar-button-users", class="field">
<button class="ui labeled icon button">
<i class="search icon"></i>
Search
</button>
</div>
</div>
</div>
<% end %>
我的应用程序助手:
def is_a_valid_email?(email)
(email =~ /^(([A-Za-z0-9]*\.+*_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\+)|([A-Za-z0-9]+\+))*[A-Za-z0-9]+@{1}((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,4}$/i)
end
我希望搜索栏忽略+
并仍然找到电子邮件。
解决方案
直接在 Rails 中工作的最简单方法是在搜索之前更正电子邮件。
在您的控制器中
def correct_email(email)
email.gsub(/[^0-9A-Za-z@.]/, '') # only keep 0-9 , A-Z, a-z, '.' and '@'
end
然后
User.where(email: correct_email(params[:search]))
推荐阅读
- angular - 如何为角度材料日期选择器设置特定时区?
- ejb - WebLogic 在部署 webapp 期间无法找到资源适配器 jmsra
- java - 具有两个入口点的 Spring Boot 应用程序:CLI 和 Web 服务
- c++ - 是否有任何方便的方法来检查 Eclipse 中类的成员变量的值?
- html - 如何获取循环中生成的项目并将它们放在 flexbox 的页面上?
- flutter - 在 Flutter 中使用 BLoC 模式?
- html-email - 当我在 Outlook 中预览时,我的一张桌子掉了下来
- excel - 使用 Excel 16 更新 MDB 记录 - ActiveX 组件无法创建对象
- php - 删除失败,正在将 .\composer.json 还原为其原始内容
- google-bigquery - 在 BigQuery 中创建高级细分