由于某种原因,Devise在登录索引页面(todo_lists_path)后停止了路由。我不知道发生了什么。有一件事是我实现了茧,但只在我的_form中实现了todo_lists。会发生的事情是它只是回到登录页面而没有在
中签名我确实在控制台中创建了一个虚拟用户,并在此处尝试登录时呈现的内容:
Started GET "/users/sign_in?utf8=%E2%9C%93&authenticity_token=taJFijjoRwVbWTZIyJtn1q7xzPvg5qXPeNQ8Ths1lVQ%3D&user%5Bemail%5D=member%40example.com&user%5Bpassword%5D=[FILTERED]&user%5Bremember_me%5D=0&commit=Log+in" for 127.0.0.1 at 2014-09-16 22:47:16 -0500
Processing by Devise::SessionsController#new as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"taJFijjoRwVbWTZIyJtn1q7xzPvg5qXPeNQ8Ths1lVQ=", "user"=>{"email"=>"member@example.com", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Log in"}
Rendered devise/shared/_links.erb (0.9ms)
Rendered devise/sessions/new.html.erb within layouts/application (5.1ms)
Completed 200 OK in 669ms (Views: 527.4ms | ActiveRecord: 0.0ms)
class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
before_action :configure_permitted_parameters, if: :devise_controller?
def after_sign_in_path_for(resource)
todo_lists_path
end
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) << :name
end
end
Rails.application.routes.draw do
get 'welcome/index'
get 'welcome/about'
devise_for :users
resources :todo_lists do
resources :todo_items
end
root to: 'welcome#index'
end
application.html.erb
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title><%= content_for?(:title) ? yield(:title) : "Blocitoff" %></title>
<%= stylesheet_link_tag "application" %>
<script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
<%= javascript_include_tag "vendor/modernizr" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
</head>
<body>
<div class="contain-to-grid sticky">
<nav class="top-bar" data-topbar role="navigation" data-options="sticky_on: large">
<ul class="title-area">
<li class="name">
<h1><%= link_to 'Blocitoff', todo_lists_path %></h1>
</li>
</ul>
<section class="top-bar-section">
<!-- Right Nav Section -->
<%if current_user %>
<ul class="right">
<li><%= link_to (current_user.name || current_user.email)%></li>
<li><%= link_to "Sign Out", destroy_user_session_path, method: :delete%></li>
</ul>
<% else %>
<ul class="right">
<li><%= link_to "Sign In",new_user_session_path %></li>
<li><%= link_to "Sign Up", new_user_registration_path %></li>
</ul>
</section>
<% end %>
</nav>
</div>
<%= yield %>
<%= javascript_include_tag "application" %>
</body>
登录
<h2 class="text-center">Log in</h2>
<form>
<div class="row">
<div class="large-12 columns">
<%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
<div>
<%= f.label :email %>
<%= f.email_field :email, autofocus: true %>
</div>
</div>
</div>
<div class="row">
<div class="large-12 columns">
<%= f.label :password %>
<%= f.password_field :password, autocomplete: "off" %>
</div>
</div>
<div class="row">
<div class="large-12 columns">
<% if devise_mapping.rememberable? -%>
<div><%= f.check_box :remember_me %> <%= f.label :remember_me %>
<% end -%>
<div class="row">
<div class="large-12 columns">
<%= f.submit "Log in", class: "button [tiny small large]" %>
</div>
</div>
<% end %>
<%= render "devise/shared/links" %>
</div>
</div>
</form>
答案 0 :(得分:2)
您的SignIn视图不正确。您已经拥有form_for
,但您也使用了<form>
代码,这是错误的。因为您没有method
或action
,默认情况下会使用GET
方法将表单数据发送到您当前的网址。
您应该更新您的观点,如下所示:
<h2 class="text-center">Log in</h2>
<%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
<div class="row">
<div class="large-12 columns">
<div>
<%= f.label :email %>
<%= f.email_field :email, autofocus: true %>
</div>
</div>
</div>
<div class="row">
<div class="large-12 columns">
<%= f.label :password %>
<%= f.password_field :password, autocomplete: "off" %>
</div>
</div>
<div class="row">
<div class="large-12 columns">
<% if devise_mapping.rememberable? -%>
<div><%= f.check_box :remember_me %> <%= f.label :remember_me %>
<% end -%>
<div class="row">
<div class="large-12 columns">
<%= f.submit "Log in", class: "button [tiny small large]" %>
</div>
</div>
<%= render "devise/shared/links" %>
</div>
</div>
<% end %>