我怎样才能在ajax中设计返回JSON:成功调用而不是HTML

时间:2014-10-02 07:09:46

标签: jquery ruby-on-rails ajax json devise

我正在尝试将我的设计注册设置为ajax调用,以便我可以在用户注册流程中获取错误。目前,我有它,以便能够成功创建用户,但我无法获得JSON格式的错误,无法正确使用来为用户进行验证。

这就是我现在所拥有的:

形式

<%= form_for(resource, as: resource_name, url: registration_path(resource_name), format: :json, remote: true) do |f| %>
    <%= devise_error_messages! %>

    <%= f.hidden_field :card_id %>

    <div><%= f.label :email %><br />
      <%= f.email_field :email, autofocus: true %></div>

    <div><%= f.label :password %> <% if @validatable %><i>(<%= @minimum_password_length %> characters minimum)</i><% end %><br />
        <%= f.password_field :password, autocomplete: "off" %></div>

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

JS

$('#new_user').on("ajax:success", function(data, status, xhr) {
    console.log(data);
    console.log(status);
    console.log(xhr);
});

在这种情况下,状态响应HTML,这通常发生在标准设计添加

1 个答案:

答案 0 :(得分:0)

如果要返回JSON数据,则需要子类化Devise::RegistrationsController并创建自己的控制器操作。只需像普通的创建操作一样构建它。如果要将数据返回给客户端,请使用render jsonDevise's Wiki应该提供大量的帮助以及网络上还有很多其他资源。