2012-04-05 3 views
0

В настоящее время я следую учебнику Ruby on Rails и столкнулся с небольшой проблемой после завершения section 8.3 в уроке. Функционально все работает отлично, я могу добавлять пользователей через мою форму и все такое. Однако теперь мои формы отображаются дважды на каждой странице веб-сайта. Я несколько раз перебирал код и просто не могу понять, что вызывает это. Вот ссылка на мой сайт Heroku, где вы можете увидеть проблему: http://deep-mist-5284.heroku.com/Руководство по Ruby on Rails от Michael Hartl: глава 8.3 - форма веб-сайта, отображающая дважды

Когда я запускаю сайт на сервере rails, он выводит эти файлы, которые он использует, но я просмотрел их и не нашел ничего плохого ,

Started GET "/signup" for 127.0.0.1 at 2012-04-05 16:43:13 -0700 
Processing by UsersController#new as HTML 
Rendered shared/_error_messages.html.erb (1.2ms) 
Rendered layouts/_stylesheets.html.erb (17.9ms) 
Rendered layouts/_header.html.erb (10.6ms) 
Rendered layouts/_footer.html.erb (2.6ms) 
Rendered users/new.html.erb within layouts/application (280.3ms) 

Кто-нибудь знает, что вызывает эту проблему?

UsersController класс UsersController < ApplicationController

def show 
    @user = User.find(params[:id]) 
    @title = @user.name 
    end 

    def new 
    @user = User.new 
    @title = "Sign up" 
    end 

    def create 
    @user = User.new(params[:user]) 
    if @user.save 
     flash[:success] = "Welcome to the Sample App!" 
     redirect_to @user 
    else 
     @user.password = "" 
     @user.password_confirmation = "" 
     @title = "Sign up" 
     render 'new' 
    end 
    end 
end 

Shared/_error_messages.html.erb

<% if @user.errors.any? %> 
    <div id="error_explanation"> 
    <h2><%= pluralize(@user.errors.count, "error") %> 
     prohibited this user from being saved:</h2> 
    <p>There were problems with the following fields:</p> 
    <ul> 
    <% @user.errors.full_messages.each do |msg| %> 
     <li><%= msg %></li> 
    <% end %> 
    </ul> 
    </div> 
<% end %> 

Макеты/_stylesheets.html.erb

<!--[if lt IE 9]> 
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> 
<![endif]--> 
<%= stylesheet_link_tag 'blueprint/screen', :media => 'screen' %> 
<%= stylesheet_link_tag 'blueprint/print', :media => 'print' %> 
<!--[if lt IE 8]><%= stylesheet_link_tag 'blueprint/ie' %><![endif]--> 
<%= stylesheet_link_tag 'custom', :media => 'screen' %> 

Макеты/_header.html .erb

<header> 
    <%= link_to logo, root_path %> 
    <nav class="round"> 
    <ul> 
     <li><%= link_to "Home", root_path %></li> 
     <li><%= link_to "Help", help_path %></li> 
     <li><%= link_to "Sign in", '#' %></li> 
    </ul> 
    </nav> 
</header> 

Макеты/_footer.html.erb

<footer> 
    <nav class="round"> 
    <ul> 
     <li><%= link_to "About", about_path %></li> 
     <li><%= link_to "Contact", contact_path %></li> 
     <li><a href="http://news.railstutorial.org/">News</a></li> 
     <li><a href="http://www.railstutorial.org/">Rails Tutorial</a></li> 
    </ul> 
    </nav> 
</footer> 

пользователей/new.html.erb

<h1>Sign up</h1> 

<%= form_for(@user) do |f| %> 
    <%= render 'shared/error_messages' %> 
    <div class="field"> 
    <%= f.label :name %><br /> 
    <%= f.text_field :name %> 
    </div> 
    <div class="field"> 
    <%= f.label :email %><br /> 
    <%= f.text_field :email %> 
    </div> 
    <div class="field"> 
    <%= f.label :password %><br /> 
    <%= f.password_field :password %> 
    </div> 
    <div class="field"> 
    <%= f.label :password_confirmation, "Confirmation" %><br /> 
    <%= f.password_field :password_confirmation %> 
    </div> 
    <div class="actions"> 
    <%= f.submit "Sign up" %> 
    </div> 
<% end %> 

макеты/приложения

<!DOCTYPE html> 
<html> 
    <head> 
    <title><%= title %></title> 
    <%= csrf_meta_tag %> 
    <%= render 'layouts/stylesheets' %> 
    </head> 
    <body> 
    <div class="container"> 
     <%= render 'layouts/header' %> 
     <section class="round"> 
     <% flash.each do |key, value| %> 
      <%= content_tag(:div, value, :class => "flash #{key}") %> 
     <% end %> 
     <%= yield %> 
     </section> 
     <section class="round"> 
     <%= yield %> 
     </section> 
     <%= render 'layouts/footer' %> 
     <%= debug(params) if Rails.env.development? %> 
    </div> 
    </body> 
</html> 

ответ

2

У вас есть два <% = yield%> в ваших макетах/application.html.erb. У вас Rails также добавляет содержимое users/new.html.erb (и каждую другую страницу) в ваш layouts/application.html.erb дважды. Удалите все, и все будет исправлено.

+0

Вау, большое спасибо !!!! Вот так! – h4xhouse

Смежные вопросы