为什么Rails 4脚手架会创建json.jbuilder文件?

时间:2013-05-28 16:39:26

标签: ruby-on-rails ruby-on-rails-4

我使用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以及为什么需要它。

提前致谢!如果我能澄清这个问题,请告诉我。

4 个答案:

答案 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