在Rails中通过JS设计注册#update

Lev*_*Lev 7 javascript ajax ruby-on-rails devise ruby-on-rails-3

我正在尝试通过使用AJAX的Devise更新用户模型,并让Devise使用正确的javascript文件进行响应.

我想将表单远程提交到注册#update action,但这不适用于Devise的默认响应,它使用RegistrationsController中的以下内容:

respond_with resource, :location => after_update_path_for(resource)
Run Code Online (Sandbox Code Playgroud)

上面尝试重定向到默认路由而不是呈现update.js.erb文件.我能够覆盖该操作并使其与以下更改一起使用:

respond_to do |format|
    format.html
    format.js
 end
Run Code Online (Sandbox Code Playgroud)

但是,这似乎是非常暴力的,因为我压倒整个行动.是否有一种简单的方法让Devise知道用javascript响应而不是默认重定向?

Lev*_*Lev 12

只需要在RegistrationsController中添加一行,以便Devise知道响应html和js.

class RegistrationsController < Devise::RegistrationsController
  respond_to :html, :js
end
Run Code Online (Sandbox Code Playgroud)

阅读response_with如何真正有所帮助.几个好的链接:

Rails API响应程序

AsciiCast