Rails 5: зарегистрируйтесь и войдите с Ajax - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть приложение Rails с регистрацией на ajax с помощью devise.Я делаю это с этим постом .Регистрация работает, но все еще перенаправляет на root_url и не регистрирует пользователя после регистрации.

Что мне нужно, так это не перенаправлять и не входить в систему пользователя без перезагрузки страницы.

Кто-то делал это раньше?

моя форма:

<%= form_for(resource, as: resource_name, url: registration_path(resource_name), :html => {:id => "login-box", :class => "contact-form", :'data-type' => 'json'}, :remote => true ) do |f| %>

  <%= devise_error_messages! %>

  <div class="field">
    <%= f.label :email %><br />
    <%= f.email_field :email, autofocus: true, autocomplete: "email", required: true %>
  </div>

  <div class="field">
    <%= f.label :password %>
    <% if @minimum_password_length %>
    <em>(<%= @minimum_password_length %> characters minimum)</em>
    <% end %><br />
    <%= f.password_field :password, autocomplete: "new-password", required: true %>
  </div>

  <div class="actions">
    <%= f.submit "Sign up" %>
  </div>
<% end %>

javascript:

$(document).on('ajax:success', '#login-box', function(e) {

  });

  $(document).on('ajax:error', '#login-box', function(event, xhr, settings, exceptions) {
      var error_messages;

      error_messages = xhr.responseJSON['error'] ? "<div class='alert alert-danger pull-left'>" + xhr.responseJSON['error'] + "</div>" : xhr.responseJSON['errors'] ? $.map(xhr.responseJSON["errors"], function(v, k) {
           return "<div class='alert alert-danger pull-left'>" + k + " " + v + "</div>";
         }).join("") : "<div class='alert alert-danger pull-left'>Unknown error</div>";
         return $('#login-box').prepend(error_messages);
  });

И япоместите этот код на мои собственные контроллеры устройств (сеансы и регистрации)

respond_to :html, :json

Спасибо!

...