0

我成功完成了 Michael Hartl 的 Rails 教程,现在我正在从事我的第一个更独立的 Web 开发项目。我在 StackOverflow 上阅读了其他 NoMethodError 问答,但到目前为止没有任何帮助。

我正在重新使用 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 回答