有人能告诉我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
。