33

我已经生成了一个新的 rails 4 (rc1) 项目,rails new并使用rails g scaffold.

正如预期的那样,它已经创建了迁移、控制器和所有必需的视图文件。

它还创建了 show.json.jbuilder 和 index.json.jbuilder。

我认为这是为了帮助从模型生成 json。控制器也包含 format.json 调用。

问题:为什么需要 json 以及生成的应用程序的哪个部分使用 json?看起来(对我来说)视图没有使用 json 来呈现任何东西,似乎它们是在服务器端呈现的(@model 变量在视图中用于获取内容)。

边缘指南(http://edgeguides.rubyonrails.org/)没有提到 jbuilder 以及为什么需要它。

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

4

4 回答 4

34

要回答“为什么”部分:

多年来,Rails 中脚手架的相关性有所改变。它不再意味着生成无法轻易抽象出来的必要代码。今天,它主要是一种教育工具,可以为您提供一些动态的示例并展示最佳实践。(这也是为什么他们会到处充斥着有争议的评论的原因)

换句话说,生成的文件旨在告诉您:

如果您打算使用 Rails,这是一个很好的方法。

或在您的特定情况下:

如果您打算使用 JBuilder,这里有一个生成 JSON 的好方法。

他们打算告诉:“必须这样做。” 或“你必须保留所有生成的东西,因为这是必要的。”

于 2013-11-12T14:03:24.417 回答
19

如前所述,Rails 4 似乎将生成文件作为一种拥有响应 JSON 查询的模板的方式。因此,假设您已经“搭建”了一个模型Car,然后它会响应一个 HTML 页面和一个汽车的详细视图(id 1),如果您去的话/car/1

然后,如果您转到/car/1.json,它将呈现show.json.jbuilder文件。show由于脚手架时方法为空,因此似乎还有某种自动机制:

def show
end
于 2013-08-14T09:16:25.357 回答
14

Rails 4 脚手架生成器创建 jbuilder 文件,因为 gem 'Jbuilder' 在 Gemfile 中。如果您从您的此功能中删除此Gemfile功能将停止。

于 2013-06-22T20:41:42.433 回答
10

Jbuilder gem 默认包含在 RoR 4 中。你可以在它的页面上阅读它。有一个关于它的演员表:Railscasts #320

于 2013-05-29T06:52:50.827 回答