0

私は、Michael Hartl の Rails チュートリアルを無事に完了し、現在、より独立した最初の Web 開発プロジェクトに取り組んでいます。StackOverflow で他の NoMethodError Q&A を読みましたが、これまでのところ何も役に立ちません。

Hartl がカバーした概念を再利用しています。具体的には、 というカスタマー ヘルパーを定義していますfull_title。次のコードを入れました/app/helpers/application_helper.rb

module ApplicationHelper
  def full_title(page_title)
    base_title = 'BaseTitle Text'
    if page_title.empty?
      base_title
    else
      "#{base_title} | #{page_title}"
    end
  end
end

次に、app/views/layouts/application.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 %>
</head>
<body>

<%= yield %>

</body>
</html>

でこれらのテストをspec/requests/static_pages_spec.rb行うと、NoMethodError / undefined method.

it "should have the right links on the layout" do
    visit root_path
    click_link "About"
    page.should have_selector 'title', text: full_title('About')
    click_link "Contact"
    page.should have_selector 'title', text: full_title('Contact')

ここでメソッドが認識されない理由がよくわかりません。

参考までに、私は Capybara 1.1.2 を使用しています。どんな助けでも大歓迎です。

4

1 に答える 1

2

仕様にヘルパー モジュールを含めてみてください。

include ApplicationHelper

または、RSpecを使用する場合は、次のようなモジュールを含めることができます。

RSpec.configure do |config|
  # ...
  config.include ApplicationHelper
end
于 2013-06-17T20:38:46.607 に答える