У меня есть приложение 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
Спасибо!