回答
看看这篇文章,看看它是你在找什么。 https://hackhands.com/sign-users-ajax-using-devise-rails/
首先,您要将Devise配置为接受JSON请求,因为这是AJAX发送的内容。进入config/initializers/devise.rb
并将config.http_authenticatable_on_xhr
更改为false
,然后将config.navigational_formats
更改为等于["*/*", :html, :json]
。
接下来,您将不得不覆盖Devise Sessions控制器以使用JSON进行响应。你的会话控制器看起来应该像这样:
class SessionsController resource_name, :recall => "#{controller_path}#failure")
sign_in_and_redirect(resource_name, resource)
end
def sign_in_and_redirect(resource_or_scope, resource=nil)
scope = Devise::Mapping.find_scope!(resource_or_scope)
resource ||= resource_or_scope
sign_in(scope, resource) unless warden.user(scope) == resource
return render :json => {:success => true}
end
def failure
return render :json => {:success => false, :errors => ["Login failed."]}
end
end
之后,你需要将你的用户模型映射到设计资源。您可以通过将以下内容添加到您希望使用Devise AJAX功能的应用程序帮助程序或控制器的帮助程序文件来实现此目的。
module ApplicationHelper
def resource_name
:user
end
def resource
@resource ||= User.new
end
def devise_mapping
@devise_mapping ||= Devise.mappings[:user]
end
end
然后,你将不得不重定向Devise使用你所做的控制器,而不是自己的。更改您的routes.rb
文件看起来像:
devise_for :users, :controllers => {sessions: 'sessions}
现在你想改变你的登录表单。使用rails generate devise:views
生成Devise视图。您应该使用form_for
助手,包括参数
(resource, :as => resource_name,
:url => session_path(resource_name) ,
:html => {:id => "sign_in_user"},
:format => :json,
:remote => true)
的看法如何看起来剩下的就看你。
最后,您需要包含Javascript才能捕获服务器的AJAX响应。这是coffescript中的一个例子。
$("form#sign_in_user").bind "ajax:success", (e, data, status, xhr) ->
if data.success
$('#sign_in').modal('hide')
$('#sign_in_button').hide()
$('#submit_comment').slideToggle(1000, "easeOutBack")
else
alert('failure!')
编辑我的答案。对不起,最初质量差的答案。 – gtoledo
- 1. Ruby on Rails - 登录
- 2. SOAP Ruby On Rails登录Affili.net
- 3. Ruby on Rails登录会话
- 4. 登录/注册Ruby on Rails?
- 5. Ruby on Rails /宝石设计/登录页面模式
- 6. Ruby on Rails - 设计确认
- 7. Ruby on Rails设计用户
- 8. Ruby on Rails的:设计
- 9. Rails设计登录
- 10. Ruby on Rails - 登录会话与编辑
- 11. 用Ruby on Rails缓存登录表单
- 12. Ruby on Rails - Heroku问题&用户登录
- 13. 创建一个计数方法用户登录与Ruby on Rails
- 14. Ruby on Rails的设计:登记删除回传失误
- 15. Ruby on Rails设置
- 16. 设置Ruby on Rails
- 17. Ruby on Rails中的设计问题
- 18. 设计Ruby on Rails 4路线
- 19. 学习Ruby on Rails的设计师?
- 20. Ruby on Rails设计问题项目
- 21. Ruby on Rails的错误与设计
- 22. Ruby on Rails的设计形式帮手
- 23. 建模设计问题(Ruby On Rails)
- 24. Ruby on Rails设计不能获取current_user_id
- 25. 使用Google登录,使用Ruby on Rails API和React
- 26. Ruby on rails3登录教程
- 27. ruby on rails rest api with ruby登录页面
- 28. 学习Ruby和Ruby on Rails
- 29. Ruby on Rails和facebook
- 30. Ruby on Rails和CruiseControl.rb
如果你想在浏览器中任何异步的AJAX是唯一的选择... – max