我的index.html.erb没有HTML结构可以吗?

时间:2016-12-01 22:39:16

标签: html ruby-on-rails ruby scaffold

我有一个脚手架生成的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>标签等。我可以添加它还是没有必要?

1 个答案:

答案 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