ruby on rails 4-使用登录布局呈现错误的头



有人能告诉我Rails 4应用程序中的以下布局是如何可能的吗

# app/views/layout/login.html.erb
<!DOCTYPE html>
<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
    <title>PIPPO</title>
    <meta content="yes" name="apple-mobile-web-app-capable">
    <meta content="black-translucent" name="apple-mobile-web-app-status-bar-style">
    <meta name="viewport" content="initial-scale = 1.0,maximum-scale = 1.0" />
    <link href="/assets/login.css" media="all" rel="stylesheet" />
    <script src="/assets/login.js"></script>
    <%= csrf_meta_tags %>
  </head>
  <body>
    <div class="main-content">
      <%= yield %>
    </div>
  </body>
</html>

使用以下控制器

class SessionsController < ApplicationController
  layout 'login'
  ...
  def destroy
    Session.find(session[:id]).close
    reset_session
    respond_to do |format|
      flash[:success] = t('sessions.logout')
      format.html { redirect_to login_url }
    end
  end
end

和路由

...
  get 'login', to: 'sessions#new', as: 'login'
  get 'logout', to: 'sessions#destroy', as: 'logout'
...

单击<%= link_to 'logout', logout_path %>后会生成以下HTML?

<head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
    <title>PIPPO</title>
    <meta content="yes" name="apple-mobile-web-app-capable">
    <meta content="black-translucent" name="apple-mobile-web-app-status-bar-style">
    <meta name="viewport" content="initial-scale = 1.0,maximum-scale = 1.0" />
    <link href="/assets/application.css" media="all" rel="stylesheet" />
    <script src="/assets/application.js"></script>

    <meta content="authenticity_token" name="csrf-param" />
<meta content="l9+umk+wjpXY4UFiKEeuQkGgMvjbbZ2uDxyJHowTJFo=" name="csrf-token" />
  </head>

我是不是遗漏了什么?我花了两天时间才想明白。为什么它使用主布局中的头而不是登录中的头?

谢谢你的帮助。

更新-忘记提及我的日志文件状态:

呈现的会话/new.html.erb在layouts/login(1.4ms)中

根据问题中给出的布局名称,即

 app/views/layout.login.html.erb

这里有几个错误:

  • 布局应放在app/views/layouts文件夹中
  • 文件名应为login.html.erb,而不是layout.login.html.erb

在您的案例中,Rails在app/views/layouts中找不到login.html.erb,它呈现了默认布局app/views/layouts/application.html.erb

最新更新