使用HAML替代ERB会导致测试失败。

3
这似乎非常基础,但我正在使用 Rails 5,并将所有视图从 ERB 替换为 HAML。现在我的其中一个测试失败,显示如下:
ActionController::UnknownFormat: ProductsController#index is missing  a template for this request format and variant.

request.formats: ["text/html"]
request.variant: []
    test/controllers/products_controller_test.rb:9:in `block in <class:ProductsControllerTest>'

有没有任何地方可以更改默认设置,或者我还需要解决其他问题?我的路由没问题,我可以轻松访问索引页面。


3
标题相关吗? - Esse
4个回答

5
您需要安装haml,在Gemfile中添加gem 'haml',接下来在控制台中运行bundle install

现在我看到只有一个测试失败了,你能把测试展示给我们看吗? - MaicolBen
我重新启动了我的Web服务器。在我的情况下,使用sudo service nginx restart命令。然后它就可以识别新安装的gem了。 - Matiss

1

看起来你在 app/views/products 中缺少视图文件 index.html.haml


不,我已经将那个文件放在正确的目录下了。当我将它改回index.html.erb时,测试通过了。所以问题出在我使用的扩展名上...不确定为什么... - Drew Rodrigues
如果这是您使用Haml扩展的唯一视图,请遵循MaicolBen的答案。 - R. Sierra

0

这意味着控制器中 #index 方法的模板缺失。 Rails 有一个约定,它会在 /views/ 目录中搜索与之关联的 html.erb 或 haml 文件,遵循命名约定。


0

我遇到了同样的问题,对我们来说解决方案是在Gemfile中将haml gem添加到development组中,确保与haml相关的gems不属于任何组。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接