我有一个脚手架生成的index.html.erb,我想知道它是否可以没有基本的HTML结构?
这是我的代码:
<% provide(:title, "Signing Up") %>
<h1>Signing Up</h1>
<div class="row">
<div class="col-md-6 col-md-offset-3">
<%= form_for(:reader, url: readers_path) do |f| %>
<%= f.label :email %><br>
<%= f.email_field :email, class: 'form-control' %>
</p>
<p>
<%= f.label :password %><br>
<%= f.password_field :password_digest, class: 'form-control' %>
</p>
<%= f.submit "Signing Up", class: "btn btn-primary" %>
<% end %>
</div>
</div>
我没有看到通常的HTML,<body>
,<head>
标签等。我可以添加它还是没有必要?
答案 0 :(得分:5)
没有必要。在Rails中,您在views / layouts下有一个application.html.erb文件。这用作渲染任何页面的默认值。
您可以在此文件中看到通常的HTML结构(DOCTYPE,head,body等)。
要查找基本布局,Rails将在app/views/layouts
中查找与控制器具有相同基本名称的文件。
例如,PostsController类的渲染操作将使用app/views/layouts/posts.html.erb
。
如果没有这种特定于控制器的布局,Rails将使用app/views/layouts/application.html.erb
,这是生成脚手架时发生的情况。
这就是application.html.erb在一个新项目中的外观:
<!DOCTYPE html>
<html>
<head>
<title></title>
<%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %>
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
<%= csrf_meta_tags %>
</head>
<body>
<%= yield %> #Content from the views is shown
</body>
</html>
有关详细信息,请参阅docs