首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在登录后设计不选路

在登录后设计不选路
EN

Stack Overflow用户
提问于 2014-09-17 03:55:14
回答 1查看 72关注 0票数 0

由于某种原因,Devise在登录到索引页(todo_lists_path)后已停止路由。我不知道发生了什么。有一件事是,我实现了茧,但只在我的_form for todo_lists中。会发生的是,它只是返回到页面中的标志,而没有注册我

我确实在控制台中创建了一个虚拟用户,在这里,当我尝试登录时,它呈现了什么:

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
<!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>

登录

代码语言:javascript
运行
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-17 06:03:42

您的SignIn视图不正确。您已经拥有了form_for,但是也使用了<form>标记,这是错误的。而且,由于您没有methodaction,而且默认情况下,它将使用GET方法将表单数据发送到当前的URL。

您应该更新视图如下:

代码语言:javascript
运行
复制
<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 %>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25882028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档