什么。:格式意味着rake路线

我输入了rake路线,我得到了一堆这样的url – /articles/:id(.:format)

我的问题是 – .:format是什么意思? 从Rails指南路由文章中不清楚,并且在StackOverflow或google上没有其他有用的匹配.:format 。 有一个类似的格式是/:controller(/:action(/:id(.:format))) ,我也不明白。

谢谢

编辑跟进问题 –

如果我只想路由HTML页面。 最佳做法是在路由中指定类似。:html的内容或使用。:format并为format.html写一个respond_to块? 在后一种情况下,是否会忽略所有其他格式?

这是所请求文件的格式。 例如,如果你想要一个图像,你可能在请求中有一个文件扩展名 – 例如, example.com/example_image.png会给你格式为png 。 然后将其包含在请求中,以便根据所请求的格式改变响应类型。

对于一个用法示例,您可能希望允许将资源表示为pdf,作为普通的html页面和json – 您可能会编写如下内容:

 respond_to do |format| format.html { ... } format.pdf { ... } format.json { ... } end 

然后在相应的格式下进行单独的渲染调用。


编辑:

GET /:controller(/:action(/:id(.:format))) :controller#:action

首先,关于格式化。 括号表示给定的数据是可选的。 冒号意味着它在相应URL中找到的任何字符串都应该传递给params散列中的控制器。

这本质上是一个通配符匹配器,它将尝试将非常多的请求与控制器进行匹配。 例如,假设这是你唯一的路线,有人试图获得’/ users’。 这会将users映射到UsersController ,并默认调用/ render index 。 如果有人获得users/new ,则将调用控制器内的new操作。 如果调用了idformat ,它们也将被传递给控制器​​。

。:format匹配mime类型。

例如,如果您发送查找index.html的请求,则格式会将’html’捕获为:format。

然后在你的控制器中,它会被类似的东西处理

 respond_to do |format| format.html { #do something like redirect in here } end