我成功完成了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')
我不太清楚为什么这里没有方法被识别出来。
Fyi我正在使用Capybara 1.1.2,以防万一。任何帮助非常感谢。
答案 0 :(得分:2)
也许您应该尝试在规范中包含您的帮助程序模块。
include ApplicationHelper
或者,如果您使用 RSpec ,则可以包含以下模块:
RSpec.configure do |config|
# ...
config.include ApplicationHelper
end