gpt4 book ai didi

ruby-on-rails - Ruby on Rails Michael Hartl 第 3 章错误

转载 作者:太空宇宙 更新时间:2023-11-03 16:41:15 26 4
gpt4 key购买 nike

我在 Michael Hartl 的 RoR 教程中不断遇到这个错误。是的,我用谷歌搜索了这个问题,看到有人回答了几次。我尝试了提供的解决方案,但他们没有解决问题。这是错误:

ec2-user:~/environment/sample_app (static-pages) $ rails test
Running via Spring preloader in process 16202
Run options: --seed 53019

# Running:

F

Failure:
StaticPagesControllerTest#test_should_get_about [/home/ec2-


user/environment/sample_app/test/controllers/
static_pages_controller_test.rb:20]:
Expected at least 1 element matching "title", found 0..
Expected 0 to be >= 1.


bin/rails test test/controllers/static_pages_controller_test.rb:17

F

Failure:
StaticPagesControllerTest#test_should_get_home [/home/ec2-
user/environment/sample_app/test/controllers/
static_pages_controller_test.rb:8]:
Expected at least 1 element matching "title", found 0..
Expected 0 to be >= 1.


bin/rails test test/controllers/static_pages_controller_test.rb:5

F

Failure:
StaticPagesControllerTest#test_should_get_help [/home/ec2-
user/environment/sample_app/test/controllers/
static_pages_controller_test.rb:14]:
Expected at least 1 element matching "title", found 0..
Expected 0 to be >= 1.


bin/rails test test/controllers/static_pages_controller_test.rb:11



Finished in 0.171213s, 17.5220 runs/s, 35.0441 assertions/s.
3 runs, 6 assertions, 3 failures, 0 errors, 0 skips

因此,它试图显示的内容和输入的内容之间存在误传。我理解那部分。但从字面上看,我的代码表明它应该可以工作。我完全是从书上抄的..

这是我的 static_pages_controller_test.rb 代码:

require 'test_helper'

class StaticPagesControllerTest < ActionDispatch::IntegrationTest

test "should get home" do
get static_pages_home_url
assert_response :success
assert_select "title", "Home | Ruby on Rails Tutorial Sample App."
end

test "should get help" do
get static_pages_help_url
assert_response :success
assert_select "title", "Help | Ruby on Rails Tutorial Sample App."
end

test "should get about" do
get static_pages_about_url
assert_response :success
assert_select "title", "About | Ruby on Rails Tutorial Sample App."
end


end

这是我的 applications.html.erb 代码:

<!DOCTYPE html>
<html>
<head>
<title><%= yield(:title) %> | Ruby on Rails Tutorial Sample App</title>
<%= csrf_meta_tags %>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
</head>

<body>
<%= yield %>
</body>
</html>

所以我很困惑为什么这不起作用。另一篇文章的一个回答表明它与帮助没有 html 的东西有关。但我的有。任何人都看到这里发生了什么。我正在使用 cloud9 IDE。

谢谢,本

编辑 1:更新

这是我的主页、帮助和关于 html 代码。主页:

<% provide(:title, "Home") %>

<h1>Sample App</h1>

<p>This is the home page for the
<a href="http://www.railstutorial.org/">Ruby on Rails</a>
sample application
</p>

帮助:

<% provide(:title, "Help") %>
<h1>Help</h1>

<p>
Get help on the Ruby on Rails Tutorial at the
<a href="http://www.railstutorial.org/help">Rails Tutorial help section</a>.
To get help on this sample app, see the
<a href="http://www.railstutorial.org/book"><em>Ruby on Rails Tutorial</em>
book</a>.
</p>

关于:

<% provide(:title, "About") %>

<h1>About</h1>

<p>
The <a href="http://www.railstutorial.org/"><em>Ruby on Rails
Tutorial</em></a> is a
<a href="http://www.railstutorial.org/book">book</a> and
<a href="http://screencasts.railstutorial.org/">screencast series</a>
to teach web development with
<a href="http://rubyonrails.org/">Ruby on Rails</a>.
This is the sample application for the tutorial.
</p>

为了回答以下问题,此代码尚未推送到存储库。在我发布它之前,我在本地托管它(并测试它)。当我在本地浏览器中查看它时,页面可以正常工作,但未填充标题(浏览器顶部的选项卡)。所以很明显标题功能不起作用。

更新 2:添加了 routes.rb

Rails.application.routes.draw do

root 'static_pages#home'
get 'static_pages/home'
get 'static_pages/help'
get 'static_pages/about'
get 'static_pages/contact'

# For details on the DSL available within this file, see
http://guides.rubyonrails.org/routing.html

# root 'application#hello'

end

最佳答案

我在学习 Rails 时也遇到了同样的问题,但我在另一篇 StackOverflow 文章中找到了答案。

provide stores a block of markup in an identifier for later use. In this case, 'Help' in the symbol :title. The provide is enclosed in <% %> to indicate it is executing this code and not printing out in the view.

yield in this case just spits that block back out. The yield is enclosed in <%= %> to indicate it is being printed out into the view.

Think of it as setting a variable and printing out a variable.

See: http://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#method-i-provide for more information. Note that provide is really a wrapper for content_for so that's where the good stuff is in that link.

这摘自这篇 StackOverflow 文章:yield and provide() inside template

关于ruby-on-rails - Ruby on Rails Michael Hartl 第 3 章错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49165106/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com