view_context
渲染相关里的上下文 - ActionView::Base 的实例对象。
view_context 就是 ActionView::Base 的实例对象。
_view_context_class 默认就是 ActionView::Base
view_context 内容
BlogsController.new.view_context
=> #<#<Class:0x007ff084a6ba90>:0x007ff07b745518
@_assigns={"_routes"=>nil},
@_config={},
@_controller= BlogsController:0x007ff084a6bba8
@_request=nil,
@_routes=nil,
@output_buffer=nil,
@view_flow=#<ActionView::OutputFlow:0x007ff07b757010 @content={}>,
@view_renderer= ActionView::Renderer:0x007ff07b745cc0
@virtual_path=nil>1) view_context.controller
@_controller=
#<BlogsController:0x007ff084a6bba8
@_action_has_layout=true,
@_config={},
@_headers={"Content-Type"=>"text/html"},
@_lookup_context= ActionView::LookupContext:0x007ff07b7474a8
@_prefixes=["blogs", "application"],
@_request=nil,
@_response=nil,
@_routes=nil,
@_status=200,
@_view_context_class=#<Class:0x007ff084a6ba90>,
@_view_renderer= ActionView::Renderer:0x007ff07b745cc02) view_context.view_renderer
类似概念 controller context
在 Controller 里,除了实例变量,我们还可以有其它方法传递内容给 View,两者方式类似。
因为 request/response 不是完整的,不能在浏览器里通过 url 访问,使用以下命令验证:
返回:
Note: 本示例仅为了有助于理解 view_context 及理解 Rails 是如何渲染内容的,不可用于实际项目。
参考
最后更新于
这有帮助吗?