命名空间
方法
常量
RENDER_FORMATS_IN_PRIORITY | = | [:body, :plain, :html] |
实例公共方法
render(*args) 链接
渲染模板并将结果分配给self.response_body
。
如果没有指定渲染模式选项,则模板将从第一个参数推断。
render "posts/show"
# => renders app/views/posts/show.html.erb
# In a PostsController action...
render :show
# => renders app/views/posts/show.html.erb
如果第一个参数响应render_in
,则模板将通过使用当前视图上下文调用render_in
来渲染。
渲染模式
:partial
-
有关详细信息,请参阅
ActionView::PartialRenderer
。render partial: "posts/form", locals: { post: Post.new } # => renders app/views/posts/_form.html.erb
:file
-
渲染文件的内容。此选项不应与未经消毒的用户输入一起使用。
render file: "/path/to/some/file" # => renders /path/to/some/file
:inline
-
渲染
ERB
模板字符串。@name = "World" render inline: "<h1>Hello, <%= @name %>!</h1>" # => renders "<h1>Hello, World!</h1>"
:body
-
渲染提供的文本,并将内容类型设置为
text/plain
。render body: "Hello, World!" # => renders "Hello, World!"
:plain
-
渲染提供的文本,并将内容类型设置为
text/plain
。render plain: "Hello, World!" # => renders "Hello, World!"
:html
-
渲染提供的 HTML 字符串,并将内容类型设置为
text/html
。如果字符串不是html_safe?
,则在渲染之前对字符串执行 HTML 转义。render html: "<h1>Hello, World!</h1>".html_safe # => renders "<h1>Hello, World!</h1>" render html: "<h1>Hello, World!</h1>" # => renders "<h1>Hello, World!</h1>"
:json
-
将提供的对象渲染为 JSON,并将内容类型设置为
application/json
。如果对象不是字符串,则将通过调用to_json
将其转换为 JSON。render json: { hello: "world" } # => renders "{\"hello\":\"world\"}"
默认情况下,当指定渲染模式时,不会渲染任何布局模板。
选项
:assigns
-
Hash
模板的实例变量分配。render inline: "<h1>Hello, <%= @name %>!</h1>", assigns: { name: "World" } # => renders "<h1>Hello, World!</h1>"
:locals
-
Hash
模板的局部变量分配。render inline: "<h1>Hello, <%= name %>!</h1>", locals: { name: "World" } # => renders "<h1>Hello, World!</h1>"
:layout
-
要渲染的布局模板。也可以是
false
或true
,用于禁用或(重新)启用默认布局模板。render "posts/show", layout: "holiday" # => renders app/views/posts/show.html.erb with the app/views/layouts/holiday.html.erb layout render "posts/show", layout: false # => renders app/views/posts/show.html.erb with no layout render inline: "<h1>Hello, World!</h1>", layout: true # => renders "<h1>Hello, World!</h1>" with the default layout
:status
-
与响应一起发送的 HTTP 状态代码。可以指定为数字或
Symbol
形式的状态名称。默认为 200。render "posts/new", status: 422 # => renders app/views/posts/new.html.erb with HTTP status code 422 render "posts/new", status: :unprocessable_entity # => renders app/views/posts/new.html.erb with HTTP status code 422
来源:显示 | 在 GitHub 上
# File actionpack/lib/action_controller/metal/rendering.rb, line 137 def render(*args) raise ::AbstractController::DoubleRenderError if response_body super end
render_to_string(*) 链接
类似于 render
,但只返回渲染后的模板作为字符串,而不是设置 self.response_body
。
来源:显示 | 在 GitHub 上
# File actionpack/lib/action_controller/metal/rendering.rb, line 146 def render_to_string(*) result = super if result.respond_to?(:each) string = +"" result.each { |r| string << r } string else result end end