我正在使用带有角度js的rails app进行身份验证,我正在使用设计宝石。当我提交登录表单时,我无法登录,重定向到同一页面。
app / views / devise / sessions / new.html.erb :
<form class="form-horizontal">
<%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
<fieldset>
<div class="form-group">
<div class="input-group input-group-lg">
<span class="input-group-addon">
<span class="glyphicon glyphicon-envelope"></span>
</span>
<%= f.email_field :email, autofocus: true , class: 'form-control', placeholder: 'Email'%>
</div>
</div>
<div class="form-group">
<div class="input-group input-group-lg">
<span class="input-group-addon">
<span class="glyphicon glyphicon-lock"></span>
</span>
<%= f.password_field :password, autocomplete: "off" , class: 'form-control', placeholder: 'Password'%>
</div>
</div>
<div class="form-group">
<%= button_tag(type: 'submit', class: "btn btn-primary btn-lg btn-block") do %>
Login
<% end %>
</div>
</fieldset>
<% end %>
</form>
任何人都可以解释我犯错误的地方吗?
答案 0 :(得分:1)
你肯定错过了添加..
before_filter :authenticate_user!
控制器中的
答案 1 :(得分:0)
<强>错误强>
您遇到的问题是您的表单出错,并且设计使用<%= devise_error_messages! %>
登录表单(并且不能立即使用)。
您可能会收到登录尝试中的错误,但由于您无法在视图中看到错误,因此似乎就像您被重定向回登录页面一样。< / p>
-
<强>测试强>
测试此方法的一个好方法是将其放在sessions/new.html.erb
文件中:
<% if user_signed_in? %>
SIGNED IN
<% else %>
NOT SIGNED IN
<% end %>
这将显示是否已为用户创建session
(I.E他们已登录)。如果没有,我建议你有错误,你无法看到
-
<强>修正强>
如果问题是您收到错误,修复它们的方法是使用其中一种方法在您的视图中显示它们。我们之前使用this question创建了这个:
#app/views/devise/sessions/new.html.haml
= form_for resource, as: resource_name, url: session_path(resource_name), remote: request.xhr? do |f|
= devise_error_messages!
#app/helpers/devise_helper.rb
Module DeviseHelper
def devise_error_messages!
flash_alerts = []
error_key = 'errors.messages.not_saved'
if !flash.empty?
flash_alerts.push(flash[:error]) if flash[:error]
flash_alerts.push(flash[:alert]) if flash[:alert]
flash_alerts.push(flash[:notice]) if flash[:notice]
error_key = 'devise.failure.invalid'
end
return "" if resource.errors.empty? && flash_alerts.empty?
errors = resource.errors.empty? ? flash_alerts : resource.errors.full_messages
messages = errors.map { |msg| content_tag(:li, msg) }.join
sentence = I18n.t(error_key, :count => errors.count,
:resource => resource.class.model_name.human.downcase)
html = <<-HTML
<div id="error_explanation">
<h2>#{sentence}</h2>
<ul>#{messages}</ul>
</div>
HTML
html.html_safe
end
end
答案 2 :(得分:0)
问题在于我们正在使用form_for并形成两者。我忘了更新答案。使用一件事可以解决我的问题。谢谢你试图帮助我。*