回答
看看這篇文章,看看它是你在找什麼。 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. Ruby on Rails登錄
- 3. Ruby on Rails在設計註冊和登錄時發送參數
- 4. 登錄/註冊Ruby on Rails?
- 5. Ruby on rails Facebook登錄has_secure_password
- 6. 用Ruby on Rails登錄Facebook
- 7. SOAP Ruby On Rails登錄Affili.net
- 8. Ruby on Rails登錄機會
- 9. Ruby on Rails登錄會話
- 10. Ruby on Rails登錄和註銷問題
- 11. Ruby on Rails /寶石設計/登錄頁面模式
- 12. Ruby on Rails:設計 - 第一次登錄時更改密碼
- 13. Ruby on Rails - 設計登錄在生產中區分大小寫
- 14. Ruby on Rails:設計用戶
- 15. Ruby on Rails設計用戶
- 16. Ruby on Rails的:設計
- 17. 設計問題Ruby on rails
- 18. Ruby on Rails - 設計確認
- 19. Rails設計登錄
- 20. Ruby on Rails用戶登錄事件
- 21. Ruby on Rails - Heroku問題&用戶登錄
- 22. 用Ruby on Rails緩存登錄表單
- 23. Ruby on Rails - 登錄會話與編輯
- 24. Ruby on Rails計算
- 25. 創建一個計數方法用戶登錄與Ruby on Rails
- 26. Ruby和Rails或Ruby on Rails
- 27. Ruby on Rails的設計:登記刪除回傳失誤
- 28. Ruby on Rails的第一步
- 29. Ruby on Rails設置
- 30. 設置Ruby on Rails
如果你想在瀏覽器中任何異步的AJAX是唯一的選擇... – max