0
我有一个使用Ruby on Rails 4.2.0的网站构建。现场版可在ALXS Design。在我的开发版本中,我有一个完美的手工登录系统。我试图将AJAX实现到边栏中的登录链接中,我已经在工作。但是,当我注销并单击登录链接时,表单会出现两次,有时会出现三次。如果我刷新浏览器窗口,表单只会出现一次,因为它应该是。Rails的AJAX登录没有设计或authlogic
任何想法?
在此先感谢。
sessions_controller.rb:
class SessionsController < ApplicationController
def create
if user = User.authenticate(params[:email], params[:password])
session[:user_id] = user.id
respond_to do |format|
format.html { redirect_to root_path, :notice => "Logged in successfully" }
format.js
end
else
respond_to do |format|
format.html { flash.now[:alert] = "Invalid login/password combination" }
format.js
end
render :action => 'new'
end
end
def destroy
reset_session
respond_to do |format|
format.html { redirect_to root_path, :notice => "You have successfully logged out." }
format.js
end
end
end
new.html.erb:
<div id="login-form">
<h1>Login</h1>
<%= form_tag session_path do %>
<div class="field">
<%= label_tag :email %><br />
<%= text_field_tag :email %>
</div>
<div class="field">
<%= label_tag :password %><br />
<%= password_field_tag :password %>
</div>
<div class="actions">
<%= submit_tag 'Login' %>
</div>
<% end %>
</div>
new.js.erb
$("<%= escape_javascript render(file: 'sessions/new.html.erb') %>").insertAfter('.login-link');
$('#login-form').hide().slideDown();
$('.login-link').hide();
_navigation.html.erb
<div id="sidebar-wrapper">
<ul class="sidebar-nav">
<li class="toggle-menu">
<a class="show-me menu-toggle" id="menu-toggle">
<i class="fi-arrow-left" alt="Menu Toggle" style="text-align: right; width: 100%;"></i>
<span class="fi-arrow-right" alt="Menu Toggle"></span>
</a>
</li>
<li class="sidebar-brand">
ALXS Design
</li>
<li>
<%= link_to root_path do %>Home<span class="fi-home" alt="Home"></span><% end %>
</li>
<li>
<%= link_to about_path do %>About<span class="foundicon-website" alt="About"></span><% end %>
</li>
<li>
<%= link_to projects_path do %>Projects<span class="fi-folder" alt="Projects"></span><% end %>
</li>
<% if logged_in? %>
<br />
<li>
<%= link_to new_article_path do %>New Article<span class="fi-add-doc" alt="New Article"></span><% end %>
</li>
<li>
<%= link_to "Edit Password", edit_user_path(current_user) %>
</li>
<li>
<%= link_to "Logout", logout_path %>
</li>
<% else %>
<br />
<li>
<%= link_to "Login", login_path(@user, :format => :js), :remote => true, class: 'login-link' %>
</li>
<li>
<%= link_to "Register", register_path %>
</li>
<% end %>
<li>
<div class="navigation-padding"></div>
</li>
<li class="hide-me">
<a href="https://www.facebook.com/alxsdesign" target="_blank">Facebook<span class="fi fi-social-facebook"></span></a>
</li>
<li class="hide-me">
<a href="https://github.com/tipsforthings" target="_blank">Github<span class="fi fi-social-github"></span></a>
</li>
<li class="hide-me">
<a href="https://plus.google.com/u/0/116471654573031381012/posts/p/pub" target="_blank">Google+<span class="fi fi-social-google-plus"></span></a>
</li>
<li class="hide-me">
<a href="https://twitter.com/alxsdesign" target="_blank">Twitter<span class="fi fi-social-twitter"></span></a>
</li>
</ul>
</div>
destroy.js.erb
$('.login-link')[0].reset();
我想这也许是与在会话控制器的破坏作用,或destroy.js.erb文件。
这样做的最佳方法是什么? – 2015-01-27 15:57:50