我输入 rake 路线,然后得到一堆像这样的 url -/articles/:id(.:format)
我的问题是 - 什么是.:format
意思是? Rails Guides Routing 文章中并不清楚,并且没有其他有用的匹配项.:format
在 StackOverflow 或谷歌上。有一个类似的格式是/:controller(/:action(/:id(.:format)))
我也不明白。
Thanks
编辑后续问题 -
如果我只想路由 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
然后在各自的格式下进行单独的渲染调用。
EDIT:
的解释GET /:controller(/:action(/:id(.:format))) :controller#:action
-
首先,简单介绍一下格式。括号表示给定的数据是可选的。冒号意味着它在相应 URL 中找到的任何字符串都应该传递到 params 哈希中的控制器。
这本质上是一个通配符匹配器将尝试将大量请求匹配到控制器。例如,假设这是您唯一的路线,并且有人尝试获取“/users”。这将映射users
to the UsersController
,默认情况下调用/渲染index
在其中。如果有人得到users/new
, the new
将调用控制器内的操作。如果id
and format
被调用时,它们也将被传递给控制器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)