我的页面上有一个电子邮件搜索栏。当我在+
中放入text_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 %>
我的ApplicationHelper:
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
我希望搜索栏忽略+
并仍然找到电子邮件。
答案 0 :(得分:1)
在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]))