Проверка модальной формы Rails - PullRequest
1 голос
/ 07 октября 2009

Я использую Lightbox Gone Wild для отображения модального диалога с формой внутри. Я использую ваниль Новый взгляд. Это работает как чемпион до тех пор, пока пользователь не введет правильные данные формы. Неверные данные приводят к тому, что контроллер направляет пользователя в представление New непосредственно с сообщением об ошибке. Очевидно, я бы предпочел, чтобы ошибка была возвращена модальной, хотя я понимаю причину, по которой пользователь перенаправляется в обычный новый режим просмотра с ошибками.

Один очевидный, но непрактичный вариант - написать пользовательскую проверку на стороне клиента. Другой способ - создать логику проверки на стороне клиента на основе проверок моделей. Для этого я нашел два плагина для младенцев, которые используют validation_reflection . В то время как validatious-on-rails буквально неделями client_side_validation , похоже, заброшен. Наконец, использование form_remote_tag также выглядит многообещающе, поскольку оно выполняет обратную передачу AJAX, и похоже, что оно не выполнит обновление при ошибке.

Таким образом, я ищу наиболее традиционный способ проверки ввода пользователя в форме, представленной пользователю в модальном диалоге, и при ошибке, возвращая их в это диалоговое окно с ошибками.

Код для открытия модального

<% link_to 'New Project...', new_project_path, :class => 'lbOn' %>

Новый просмотр

<% form_for(@project) do |f| %>
  <%= f.error_messages %>

  <p>
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </p>
  <p>
    <%= f.label :description %><br />
    <%= f.text_field :description %>
  </p>
  <p>
    <%= f.submit 'Create' %><br />
    <a href="#" class="lbAction" rel="deactivate">Cancel</a>
  </p>
<% end %>

Ответы [ 4 ]

3 голосов
/ 09 октября 2009

Я парень, стоящий за validatious-on-rails . Мой выстрел в этом заключается в том, что вам во многих случаях нужен как клиент, так и AJAX. Предыдущий пытается решить проверки на стороне клиента СУХИМ способом, где много потерянных опций проверки Rails, но я пытаюсь решить эту проблему, как с проверками на стороне клиента, которые максимально уважают параметры Rails - только есть некоторые проблемы с: if /: exc и некоторыми другими по вполне очевидным причинам, в большинстве случаев IRL это невозможно. В этих случаях и в тех случаях, когда вам приходится запрашивать базу данных, потому что (например, проверьте уникальность идентификатора пользователя) вам нужен AJAX. В вашем случае вам нужно только выполнить AJAX-запрос с вводом, который вы хотите проверить, и вернуть шаблон RJS / JS (будет возвращен как тело JSON), который обновляет содержимое формы / messages / etc с регулярными манипуляциями с dom. 1003 *

2 голосов
/ 07 октября 2009

Я думаю, вы могли бы вернуть шаблон RJS, который обновил бы предустановленный div в вашем Модале для ошибок (вместо перенаправления на новый)

0 голосов
/ 24 февраля 2015

Пример без проверки на стороне клиента: http://www.jetthoughts.com/blog/tech/2014/08/27/5-steps-to-add-remote-modals-to-your-rails-app.html

0 голосов
/ 07 октября 2009

Обычным способом будет проверка на стороне клиента с помощью JavaScript, а также проверка на стороне сервера. В вашем случае проверка на стороне сервера должна выполняться с использованием AJAX

Для проверки JavaScript вы можете попробовать:

http://docs.jquery.com/Plugins/Validation

Для проверки на стороне сервера вы можете попробовать:

http://guides.rubyonrails.org/activerecord_validations_callbacks.html (проверка)

http://railscasts.com/episodes/43-ajax-with-rjs (ajax)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...