Крест размещен на: http://www.ruby -forum.com / topic / 2140862 # new
Вот ошибка, которую я получаю:
.....F
Failures:
1) LayoutLinks should have the right links on the layout
Failure/Error: click_link "Sign up"
Could not find link with text or title or id "Sign up"
# ./spec/requests/layout_links_spec.rb:37:in `block (2 levels) in
<top (required)>'
Finished in 0.28358 seconds
6 examples, 1 failure
Вот тестовый файл для LayoutLinks. Последний «блок» имеет
click_link, который вызывает у меня проблему:
# спецификации / запросы / layout_links_spec.rb:
require 'spec_helper'
describe "LayoutLinks" do
it "should have a Home page at: /" do
get '/'
response.should have_selector('title', :content => "Home")
end
it "should have an About page at: /about" do
get '/about'
response.should have_selector('title', :content => "About")
end
it "should have a Contact page at: /contact" do
get '/contact'
response.should have_selector('title', :content => "Contact")
end
it "should have a Help page at: /help" do
get '/help'
response.should have_selector('title', :content => "Help")
end
it "should have a Sign up page at: /signup" do
get "/signup"
response.should have_selector('title', :content => "Sign up")
end
it "should have the right links on the layout" do
visit root_path
click_link "About"
response.should have_selector('title', :content => "About")
click_link "Contact"
response.should have_selector('title', :content => "Contact")
click_link "Help"
response.should have_selector('title', :content => "Help")
click_link "Sign up"
response.should have_selector('title', :content => "Sign up")
click_link "Home"
response.should have_selector('title', :content => "Home")
end
Остальные тесты click_link пройдены. Это только ссылка «Зарегистрироваться»
это дает мне проблему. Единственное отличие, которое я могу различить, это
что страница со ссылкой «Зарегистрироваться» обрабатывается другим
controller: Users # new v. Pages (контроллеры ниже).
Вот мои маршруты:
конфиг / routes.rb:
SampleApp::Application.routes.draw do
get "users/new"
match '/signup', :to => 'users#new'
match '/about', :to => 'pages#about'
match '/contact', :to => 'pages#contact'
match '/help', :to => 'pages#help'
root :to => 'pages#home'
end
Вот макет приложения:
приложение / просмотров / макеты / application.html.erb:
<!DOCTYPE html>
<html>
<head>
<title><%= title() %></title>
<%= csrf_meta_tag %>
<%= render 'layouts/stylesheets' %>
</head>
<body>
<div class="container">
<%= render 'layouts/header' %>
<section class="round">
<%= yield %>
</section>
<%= render 'layouts/footer' %>
</div>
</body>
</html>
Вот домашняя страница, которая содержит ссылку «Зарегистрироваться», которая вставляется в поле «yield» в макете приложения выше:
приложение / просмотров / страниц / home.html.erb:
<h1>Me</h1>
<p>Hi, this is my website.</p>
<%= link_to "Sign up", signup_path, :class => "signup_button round" %>
Вот мои контроллеры:
приложение / контроллеры / users_controller.rb:
class UsersController < ApplicationController
def new
@title = "Sign up"
end
end
приложение / контроллеры / pages_controller.rb:
class PagesController < ApplicationController
def home
@title = "Home"
end
def contact
@title = "Contact"
end
def about
@title = "About"
end
def help
@title = "Help"
end
end
Когда я вручную нажимаю ссылку «Зарегистрироваться» на домашней странице, она успешно отображает страницу:
приложение / просмотров / пользователей / new.html.erb
<h1>Users#new</h1>
<p>Find me in app/views/users/new.html.erb</p>
И если я нажму на View Source для домашней страницы, там будет ссылка «Sign up» (не путать со ссылкой «Sign in»):
<!DOCTYPE html>
<html>
<head>
<title>My website | Home</title>
<meta name="csrf-param" content="authenticity_token"/>
<meta name="csrf-token" content="i/PD5uKjp87ArBPcr51a82KeW/5peacAJ6M908f3sP8="/>
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link href="/stylesheets/blueprint/screen.css?1310454155" media="screen" rel="stylesheet" type="text/css" />
<link href="/stylesheets/blueprint/print.css?1310454155" media="print" rel="stylesheet" type="text/css" />
<!--[if lt IE 8]>
<link href="/stylesheets/blueprint/ie.css?1310454155" media="screen" rel="stylesheet" type="text/css" />
<![endif]-->
<link href="/stylesheets/custom.css?1310632912" media="screen" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="container">
<header>
<a href="/"><img alt="Autumn" class="round" height="140" src="/images/autumn.jpg?1310626333" width="300" /></a>
<nav class="round">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/help">Help</a></li>
<li><a href="#">Sign in</a></li>
</ul>
</nav>
</header>
<section class="round">
<h1>Me</h1>
<p>Hi, this is my website.</p>
<a href="/signup" class="signup_button round">Sign up</a>
</section>
<footer>
<nav class="round">
<ul>
<li><a href="/about">About</a></li>
<li><a href="/contact">Contact</a></li>
<li><a href="http://news.railstutorial.org/">News</a></li>
</ul>
</nav>
</footer>
</div>
</body>
</html>