我创建了一个小部件,允许用户使用一行JS脚本安装它,它会提示他们登录,但似乎我错误地设置了动态登录设计。
我基本上需要用户能够动态登录(因为小部件位于第三方网站上,所以无法重新加载页面)。是的,我确实确保托管我的小部件的服务器同时运行。
我如何呈现登录页面:<%=j (render 'devise/sessions/new') %>
色器件/会话/ _new.html.erb:
<h2>Log in</h2>
<%= form_for(resource, as: resource_name, url: session_path(resource_name), format: :json, remote: true) do |f| %>
<div class="field">
<%= f.label :email %>
<%= f.email_field :email, autofocus: true %>
</div>
<div class="field">
<%= f.label :password %>
<%= f.password_field :password, autocomplete: "off" %>
</div>
<% if devise_mapping.rememberable? -%>
<div class="field">
<%= f.check_box :remember_me %>
<%= f.label :remember_me %>
</div>
<% end -%>
<div class="actions">
<%= f.submit "Log in" %>
</div>
<% end %>
widget.js.erb:
//DEVISE CODE TO MAKE AJAX FUNCTIONAL
var Authentication = {
callbackSubmit: function(){
var self = this;
$("form").bind("ajax:success", function(e, response, status, xhr){
if(response.success){
window.location.reload();
}else{
self.errorsFromServer();
}
});
},
}
Authentication.callbackSubmit();
});
途径:
devise_for :users, :controllers => {registrations: 'users/registrations', sessions: 'users/sessions'}