Как мой form_tag в ruby ​​может принять мой def REGEX (в приложении helper)? - PullRequest
1 голос
/ 10 июля 2019

У меня есть панель поиска электронной почты на моей странице. Когда я вставляю символ + в свой 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 %> 

My 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-Z‌​a-z0-9]+@{1}((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,4}$/i)
end 

Я бы хотел, чтобы панель поиска игнорировала + и все еще находила письмо.

1 Ответ

1 голос
/ 11 июля 2019

Самый простой способ работать напрямую в рельсах - это исправить электронную почту перед поиском.

В вашем контроллере

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]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...