render 参数汇总与详解
参数主要有 3 类:渲染格式、指定内容、传递变量。
ActionController::Rendering
# 渲染普通文本,不带格式
:plain
# 举例 render plain: "OK"# 渲染 html 格式的内容。不推荐使用,可用 html.erb 代替
:html
# 举例 render html: "<strong>Not Found</strong>".html_safe
# 渲染普通文本,不带格式。不推荐使用,可用 :plain 代替
:text
# 兼容废除的 :text,默认是普通文本。不推荐使用
:body
# 不渲染任何东西,已废除。不推荐使用,可用 :plain 代替
:nothingNote:不想渲染任何东西,还可以使用方法
head或render_to_string
# 指定 Header status
:status
# 指定 Header content_type
:content_type
# 指定 Header location
:locationAbstractController::Rendering
例如,渲染 show action,但 request.variant = :phone 则优先渲染:
ActionView::Rendering
ActionView::Renderer
这里的 render 方法,是 AV and AC 的主要入口,如果有 :partial 则渲染的是局部模板;否则,渲染的是普通模板。
ActionView::PartialRenderer
AbstractRenderer 的子类之一。
渲染"局部模板"时,约定:每一个局部模板都有一个与之同名的"局部变量"。
例如:
则在局部模板内有 person 可用,它代表什么内容 ,以及如何更改名字。和以下几个参数有关:
Note:前面提到的参数
:locals也可传递变量,它们本质是一样的。
ActionView::TemplateRenderer
AbstractRenderer 的子类之一。
ActionView::Helpers::RenderingHelper
View 里 render 方法所在地,对外提供接口,处于最外层。
作用:根据参数是不是 Hash 类型,参数有没有带 block,决定了如何渲染。 如果不传递 hash,则默认渲染 partial 并且第 2 个及之后的参数做为 locals hash.
ActionController::Renderers (Metal 增强模块)
ActionController::Renderer
直接渲染模板,不依赖于具体 Controller#action 时,可额外传递的参数:
最后更新于
这有帮助吗?