伙计我到处寻找解决这个问题但我运气不好。
我有一个设计登录系统,我在开发中注册了一个帐户admin@admin.com,在日志中我收到了确认电子邮件,我收到了那封电子邮件,所以我的帐户得到了确认。现在,当我尝试登录控制台时,给我这条消息:
Started GET "/users/sign_in?utf8=%E2%9C%93&authenticity_token=iHIEXxGHWaIdtAGhcZ7EKvEEEYGmoEfgr1K8NcKb9nFIXuD6dpMVimOO6aBEdZJUWv9Irt%2FT0vnaucjW%2BgmJQQ%3D%3D&user%5Bemail%5D=admin%40admin.com&user%5Bpassword%5D=[FILTERED]&user%5Bremember_me%5D=0&commit=Log+in" for ::1 at 2016-06-01 13:11:54 +0200
Processing by Devise::SessionsController#new as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"iHIEXxGHWaIdtAGhcZ7EKvEEEYGmoEfgr1K8NcKb9nFIXuD6dpMVimOO6aBEdZJUWv9Irt/T0vnaucjW+gmJQQ==", "user"=>{"email"=>"admin@admin.com", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Log in"}
Rendered devise/sessions/new.html.erb within layouts/application (3.7ms)
Rendered partials/_header.html.erb (0.5ms)
Rendered partials/_menu.html.erb (0.2ms)
Rendered shared/_breadcrumbs.html.erb (0.0ms)
Rendered partials/_footer.html.erb (0.0ms)
Rendered partials/_javascripts.html.erb (0.0ms)
Completed 200 OK in 143ms (Views: 52.6ms | ActiveRecord: 0.0ms)
此后页面刷新,我没有登录。 当我重新发送确认说明时,它已经确认电子邮件已经确认,请尝试登录'
我的签到表格如下:
<% provide(:title, "Sign in") %>
<div class="col-md-12">
<form class="sign-box">
<header class="sign-title"> Sign in </header>
<%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
<% if devise_error_messages!.present? %>
<div class="alert alert-warning alert-icon alert-close alert-dismissable fade in" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<i class="font-icon font-icon-warning"></i>
<%= devise_error_messages! %>
</div>
<% end %>
<div class="field form-group">
<%= f.label :email, class: 'float-left' %><br />
<%= f.email_field :email, class: 'form-control', autofocus: true %>
</div>
<div class="field form-group">
<%= f.label :password, class: 'float-left' %><%= link_to 'Forgot your password?', new_user_password_path, class: 'float-right reset' %>
<%= f.password_field :password, class: 'form-control', autocomplete: "off" %>
</div>
<% if devise_mapping.rememberable? -%>
<div class="field form-group">
<div class="checkbox float-left">
<%= f.check_box :remember_me %>
<%= f.label :remember_me %>
</div>
</div>
<% end -%>
<div class="actions">
<%= f.submit "Log in", class: 'btn btn-rounded' %>
</div>
<p class="sign-note">New to our website? <%= link_to "Sign Up", new_user_registration_path %></p>
<% end %>
</form>
</div>
那可能是什么人?在尝试了好几天后,我没有选择。
答案 0 :(得分:1)
如果在提交表单后给出服务器的响应, 然后你搞砸了什么。检查你的路线。
当我们提交登录表单时,服务器应显示
Processing by Devise::SessionsController#create as HTML
此外,当提交表单时,请求处于POST状态,如下所示
Started POST "/users/sign_in" for ::1 at 2016-06-01 17:11:36 +0545
但您的服务器正在发送Get请求。
Started GET "/users/sign_in?utf8=%E2%9C%93&authenticit...
路径:new_user_session,动词:GET,url:/ users / sign_in(。:format)
路径应为user_session_path
,并带有动词POST
<强>更新强>: 试试这个,看看会发生什么。
form_for( :user, url: user_session_path) do |f|
<强> UPDATE2:强> 我也发现,如果您已经登录,并且仍然尝试在没有注销的情况下再次登录,则会再次重定向到SessionsController #new。尝试重新启动服务器并在首次登录时观察服务器。
答案 1 :(得分:1)
答案一直很简单
我必须将<form class="sign-box">
更改为<div class="sign-box">
显然你不能在html表单属性中有一个ruby form_for标签。