2012-07-27 50 views
2

这真的让我无法防备。在安装haml-rails gem后,stocks/index.html.haml在浏览器中呈现无问题。然而,当我试图测试使用RSpec的/水豚haml rspec失踪模板

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]}. 

如何解决这个问题? 谢谢

+1

你是怎么把'haml-rails' gem加到你的'Gemfile'中的,是不是只在开发组中? – matt 2012-07-27 20:53:53

+0

我是多么愚蠢!你是对的。那么我也应该把它包含在测试组中呢?生产如何? – zsljulius 2012-07-27 21:10:06

回答

3

为了渲染Haml模板,您需要加载haml gem。 haml-rails确实请拨require 'haml',但如果您只将haml-rails添加到您的Gemfile中的开发组,那么haml也只会在开发中加载。

为了解决这个问题,你需要或者移动haml-rails任何组,使其始终被加载(等haml也总是被载入),或添加gem 'haml'Gemfile(任何组之外)。第一个选项(将haml-rails移出开发组)可能是最简单的,但您可能希望将其留在开发组中,并明确添加gem 'haml'以避免在生产中加载不需要的代码。