渲染:动作和渲染:模板之间的区别

Posted

技术标签:

【中文标题】渲染:动作和渲染:模板之间的区别【英文标题】:Difference between render :action and render :template 【发布时间】:2011-06-30 00:50:40 【问题描述】:

render :action => "new"render :template => "users/new" 有什么区别?我听说过渲染模板,我们可以将其用于其他控制器的视图。是这样还是两者之间的渲染布局有什么区别?对于render :template,是否需要定义一个动作或者视图页面本身是否足够?

【问题讨论】:

【参考方案1】:

没有区别。render :template => 'some/thing'render 'some/thing' 相同,如果我们在some 控制器中,则与render :action => 'thing' 相同。

来自Ruby On Rails guide;

render :edit
render :action => :edit
render 'edit'
render 'edit.html.erb'
render :action => 'edit'
render :action => 'edit.html.erb'
render 'books/edit'
render 'books/edit.html.erb'
render :template => 'books/edit'
render :template => 'books/edit.html.erb'
render '/path/to/rails/app/views/books/edit'
render '/path/to/rails/app/views/books/edit.html.erb'
render :file => '/path/to/rails/app/views/books/edit'
render :file => '/path/to/rails/app/views/books/edit.html.erb'

【讨论】:

【参考方案2】:

以前,在控制器操作中调用渲染"foo/bar" 等效于render file: "foo/bar"。在 Rails 4.2 中,这已改为表示 render template: "foo/bar"。如果您需要渲染文件,请将您的代码更改为使用显式形式 (render file: "foo/bar")。

http://guides.rubyonrails.org/4_2_release_notes.html#render-with-a-string-argument

【讨论】:

【参考方案3】:
 render :action => 'some_controller_action', :layout => 'some_layout_in_layout_folder'

将呈现该控制器操作的视图并应用 some_layout_in_layout_folder 布局的资产设置(javascriptCSS)。

如果您在控制器操作中编写此代码,它将使用指定布局的样式以及在类开头定义的任何布局(如果有)

【讨论】:

以上是关于渲染:动作和渲染:模板之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

Vue生命周期中mounted和created的区别

无法在 SonataAdminBundle 模板中使用渲染(控制器)

浏览器渲染和服务器渲染区别

渲染缓冲区附件和纹理附件之间的区别

js.erb 不在 Rails 6 中渲染

特定操作的渲染布局