Hartl's railstutorial.org第5章,练习2

时间:2016-08-23 14:46:45

标签: ruby-on-rails ruby

我现在正在通过Michael Hartl的Ruby on Rails教程(https://www.railstutorial.org/book/filling_in_the_layout),发现了一个我无法谷歌修复的问题。

创建此文件后:test/helpers/application_helper_test.rb,并运行:

'rails test'

我遇到了这个失败:

AIL["test_full_title_helper", ApplicationHelperTest, 0.7209667120041559]
 test_full_title_helper#ApplicationHelperTest (0.72s)
        --- expected
        +++ actual
        @@ -1 +1 @@
        -"Help | Ruby on Rails Tutorial Sample App"
        +"Ruby on Rails Tutorial Sample App"
        test/helpers/application_helper_test.rb:6:in `block in    <class:ApplicationHelperTest>'

浏览了类似的问题,虽然问题超过一年(并且使用旧的Rails代码),但我并不清楚如何纠正这种失败。

我显然是一个Ruby noobie,所以请温柔:)任何帮助将不胜感激

static_pages_controller_test.rb:

require 'test_helper'

class StaticPagesControllerTest < ActionDispatch::IntegrationTest

  test "should get home" do
    get root_path
    assert_response :success
    assert_select "title", "Ruby on Rails Tutorial Sample App"
  end

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

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

  test "should get contact" do
    get contact_path
    assert_response :success
    assert_select "title", "Contact | Ruby on Rails Tutorial Sample App"
  end
end

和违规文件:

require 'test_helper'

class ApplicationHelperTest < ActionView::TestCase
  test "full title helper" do
    assert_equal full_title,         "Ruby on Rails Tutorial Sample App"
    assert_equal full_title("Help"), "Help | Ruby on Rails Tutorial Sample App"
  end
end

和site_layout_test.rb

require 'test_helper'

class SiteLayoutTest < ActionDispatch::IntegrationTest

  test "layout links" do
    get root_path
    assert_template 'static_pages/home'
    assert_select "a[href=?]", root_path, count: 2
    assert_select "a[href=?]", help_path
    assert_select "a[href=?]", about_path
    assert_select "a[href=?]", contact_path
    get contact_path
    assert_select "title", full_title("Contact")
  end
end

和application_helper的代码:

module ApplicationHelper
  # Returns the full title on a per-page basis.
    def full_title(page_title = '')
      base_title = "Ruby on Rails Tutorial Sample App"
      if page_title.empty?
        base_title
      else
        page_title + " | " + base_title
      end
    end
  end

help.html.erb static_page:

<% 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>

1 个答案:

答案 0 :(得分:1)

这是我的full_title方法。

module ApplicationHelper

  def full_title(page_title = "")
    base_title = "Ruby on Rails Tutorial Sample App"

    line = page_title.empty? ? "" : " | "

    return "#{page_title}#{line}#{base_title}"
  end
end