0

ヘッダー レイアウトを作成し、現在、ウェブサイトのすべてのページに表示しています。サインアップページで消えてほしいです(複数のロゴがあると見栄えが悪くなります)。

これが私のサインアップページのコンテンツです/app/views/users/new.html.erb/

<%= provide(:title, 'Sign up') %>
<h1>Sign up</h1>

<div class="row">
  <div class="span6 offset3">
    <%= form_for(@user) do |f| %>

      <%= f.label :name %>
      <%= f.text_field :name %>

      <%= f.label :email %>
      <%= f.text_field :email %>

      <%= f.label :password %>
      <%= f.password_field :password %>

      <%= f.label :password_confirmation, "Confirmation" %>
      <%= f.password_field :password_confirmation %>

      <%= f.submit "Create my account", class: "btn btn-large btn-primary" %>
    <% end %>
  </div>
</div>

そして、これが私の/app/views/layouts/applications.html.erbの内容です

<!DOCTYPE html>
<html>
  <head>
    <title><%= full_title(yield(:title)) %></title>
    <%= stylesheet_link_tag    "application", media: "all" %>
    <%= javascript_include_tag "application" %>
    <%= csrf_meta_tags %>
    <%= render 'layouts/shim' %>    
  </head>
  <body>
    <%= render 'layouts/header' %>
    <div class="container">
      <%= yield %>
      <%= render 'layouts/footer' %>
      <%= debug(params) if Rails.env.development? %>
    </div>
  </body>
</html>

<%= render 'layouts/header' %>、サインアップ ページで無視したいヘッダーを呼び出しています。

application.html.erb ファイルにステートメントを配置する必要があるかどうか、<% if .... %>または new.html.erb ファイルのヘッダーを無視できるかどうかはわかりません

4

1 に答える 1

1

組み合わせることができますcontent_for and a yield as described in the Ruby on Rails Guides on Nested Layouts. You would do something like this:

In /app/views/layouts/applications.html.erb

<head>
  <title><%= full_title(yield(:title)) %></title>
  <%= stylesheet_link_tag    "application", media: "all" %>
  <style type="text/css"><%= yield :stylesheets %></style>
  <%= javascript_include_tag "application" %>
  <%= csrf_meta_tags %>
  <%= render 'layouts/shim' %>    
</head>
<body>
  <div id="header_id">
     <%= render 'layouts/header' %>
  </div>
  <div class="container">
    <%= yield %>
    <%= render 'layouts/footer' %>
    <%= debug(params) if Rails.env.development? %>
  </div>
</body>

At the top of /app/views/users/new.html.erb

<% content_for :stylesheets do %>
  #header_id { display: none }
<% end %>

ヘッダーを含む div に一意の ID を指定し、上記の #header_id をそれに置き換えます。これは最もエレガントなソリューションではありませんが、うまくいくはずです。

于 2012-04-25T00:37:26.113 に答える