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' %>正在调用我希望在我的注册页面上被忽略的标题。

我不确定是否需要<% if .... %>在 application.html.erb 文件中放置一条语句,或者我是否可以以某种方式忽略 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 回答