这真的让我无人防守。在我安装了haml-rails gem之后,stocks / index.html.haml在浏览器中呈现没有问题。但是,当我尝试使用rspec / capybara
进行测试时describe "StockPages" do
describe "stocks/index.html.haml" do
before {visit stocks_path}
subject {page}
it { should have_selector('table#Result') }
end
end
我收到了这个错误:
Failure/Error: before {visit stocks_path}
ActionView::MissingTemplate:
Missing template stocks/index, application/index with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]}.
我该如何解决这个问题? 感谢
答案 0 :(得分:3)
为了渲染Haml模板,您需要加载haml
gem。 haml-rails
会调用require 'haml'
,但如果您只在haml-rails
中添加了Gemfile
到开发小组,那么haml
也只会加载到开发中。
要解决此问题,您需要将haml-rails
移出任何组,以便始终加载(因此haml
也始终加载),或添加gem 'haml'
到你的Gemfile
(在任何组之外)。第一个选项(将haml-rails
移出开发组)可能是最简单的,但您可能希望将其保留在开发组中并明确添加gem 'haml'
以避免在生产中加载不需要的代码。