首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails -无法Ajaxify Devise

Rails -无法Ajaxify Devise
EN

Stack Overflow用户
提问于 2015-05-22 00:45:44
回答 2查看 69关注 0票数 0

我正在尝试使用JSON让Devise与所有的请求/响应一起纯粹地在AJAX上工作。

到目前为止,我的代码如下:

我已经开始使用Devise::RegistrationsController

代码语言:javascript
复制
class Users::RegistrationsController < Devise::RegistrationsController
  respond_to :json
end

我相应的观点是:

代码语言:javascript
复制
<div class="row">
  <div class="col-lg-4"></div>
  <div class="col-lg-4">

    <h1>Sign up</h1>

    <%= form_for(resource, as: resource_name, url: registration_path(resource_name), remote: true, format: :json, html: {id: "registration"}) do |f| %>
      <%= devise_error_messages! %>

      <div class="form-group">
        <%= f.label :email %>
        <%= f.email_field :email, autofocus: true, class: "form-control" %>
      </div>

      <div class="form-group">
        <%= f.label :password %>
        <% if @validatable %>
          (<%= @minimum_password_length %> characters minimum)
        <% end %>
        <%= f.password_field :password, autocomplete: "off", class: "form-control" %>
      </div>

      <div class="form-group">
        <%= f.label :password_confirmation %>
        <%= f.password_field :password_confirmation, autocomplete: "off", class: "form-control" %>
      </div>

      <%= f.submit "Sign up", class: "btn btn-primary" %>

    <% end %>

    <%= render "users/shared/links" %>

  </div>
  <div class="col-lg-4"></div>  
</div>

成功地发出了AJAX请求,但我始终以HTML的形式得到响应。

以下是日志条目:

代码语言:javascript
复制
Started POST "/users" for ::1 at 2015-05-21 21:22:10 -0700
Processing by Users::RegistrationsController#create as JS
  Parameters: {"utf8"=>"✓", "user"=>{"email"=>"", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Sign up"}
   (1.0ms)  begin transaction
   (0.3ms)  rollback transaction
  Rendered users/shared/_links.html.erb (2.2ms)
  Rendered users/registrations/new.html.erb within layouts/application (20.0ms)
Completed 200 OK in 444ms (Views: 361.7ms | ActiveRecord: 1.2ms)

我做错了什么?

EN

回答 2

Stack Overflow用户

发布于 2015-05-22 01:55:38

更改您的devise.rn初始值设定项,添加以下行:

代码语言:javascript
复制
config.navigational_formats = ['*/*', :html, :json]

你做了正确的RegistrationsController,但你需要告诉devise使用你的而不是他的。

将您的routes.rb更改为:

代码语言:javascript
复制
devise_for :users, controllers: {registrations: "users/registrations"}
票数 0
EN

Stack Overflow用户

发布于 2015-05-22 01:58:16

在视图中更改此行。

代码语言:javascript
复制
<%= form_for(resource, as: resource_name, url: registration_path(resource_name), remote: true, format: :json, html: {id: "registration"}) do |f| %>

对这个。

代码语言:javascript
复制
<%= form_for(resource, as: resource_name, url: registration_path(resource_name, format: :json), remote: true, html: {id: "registration"}) do |f| %>

您发送给devise的Post Ajax请求应该是。

代码语言:javascript
复制
POST "/users.json"

而不是

代码语言:javascript
复制
POST "/users"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30379730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档