Sails:404页面不会使用默认布局?

时间:2014-05-04 16:09:59

标签: sails.js

在sails.js中,views文件夹中的所有文件都使用layout.ejs作为模板 像404.ejs这样的错误页面由于某种原因不会使用layout.ejs。

我找不到任何设置,我可以更改它吗?

谢谢!

如果需要,指向存储库的链接: http://github.com/ronenteva/MySkills

2 个答案:

答案 0 :(得分:5)

Sails v0.10.x使用notFound响应来提供404页面,相当于在控制器操作中调用res.notFound()。我们在api/responses/notFound.js中为您提供了默认的响应处理程序,但您可以自定义它以执行任何操作,包括使用res.view()为布局提供404页面。默认代码使用res.render而不是res.view,因为默认404.ejs有自己的布局。

自定义回复的文档为here

在Sails v0.9中,您可以修改views/404.ejs文件,然后编辑config/404.js文件以使用res.view代替res.render如果您喜欢已更新404.ejs以使用您的默认布局。

答案 1 :(得分:1)

由于我遇到同样的问题,但是因为403错误,我发现了你的帖子。 不幸的是,自从Sails 0.11开始,事情发生了变化,这个解决方案不再适用了......

经过一番努力,解决方案非常简单 只需编辑.js文件夹中相应的forbidden.js文件(notFound.jsapi/responses等),即可在任何return来电之前添加(为什么不呢?在res.status(),mmmh?之后,这个:

res.locals.layout = 'myLayout';

假设您将布局文件命名为myLayout.ejs

如果您更喜欢使用默认布局,请将'myLayout'替换为false

这是:)