我使用rails new
生成了一个新的rails 4(rc1)项目,并使用rails g scaffold
生成了一个脚手架。
正如预期的那样,它创建了迁移,控制器和所有必需的视图文件。
它还创建了show.json.jbuilder和index.json.jbuilder。
我认为这是为了帮助模型生成json。控制器也包含format.json调用。
问题:为什么它需要json以及生成的应用程序的哪个部分使用json?它看起来不像(对我来说)视图使用json渲染任何东西,似乎它们在服务器端呈现(@model变量在视图中用于获取内容)。
边缘指南(http://edgeguides.rubyonrails.org/)没有提到jbuilder以及为什么需要它。
提前致谢!如果我能澄清这个问题,请告诉我。
答案 0 :(得分:34)
回答"为什么"部分:
多年来,Rails中脚手架的相关性有所改变。它不再意味着生成无法轻易抽象出来的必要代码。今天,它主要是一个教育工具,为您提供一个有点动态的示例并演示最佳实践。 (这也是为什么他们散布有争议有用的评论的原因)
换句话说,生成的文件旨在告诉您:
如果你打算使用Rails,这是一个很好的方法。
或在您的具体案例中:
如果您打算使用JBuilder,这是生成JSON的好方法。
他们不意味着告诉:"这就是必须要做的事情。"或者"你必须保留所有生成的东西,因为它是必要的。"
答案 1 :(得分:19)
如前所述,Rails 4似乎生成文件作为一种模板来响应JSON查询。所以,假设你已经“搭建”了一个模型Car
,那么如果你去/car/1
,它会回复一个HTML页面和一个汽车的详细视图(id 1)。
然后,如果你转到/car/1.json
,它将呈现show.json.jbuilder
文件。似乎还有某种自动机制,因为show
方法在搭建时是空的:
def show
end
答案 2 :(得分:14)
Rails 4脚手架生成器创建jbuilder文件,因为gem“Jbuilder”在Gemfile中。如果您从Gemfile
中移除此功能,此功能将停止。
答案 3 :(得分:10)
Jbuilder gem包含在RoR 4中。你可以在它的页面上阅读它。关于它的演员:Railscasts #320。