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

时间:2011-02-18 18:38:23

标签: ruby-on-rails rendering

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

3 个答案:

答案 0 :(得分:63)

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

来自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'

答案 1 :(得分:3)

以前,在控制器操作中调用呈现"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

答案 2 :(得分:0)

 render :action => 'some_controller_action', :layout => 'some_layout_in_layout_folder'

将呈现该控制器动作的视图,并应用javascript布局的资产设置(CSSsome_layout_in_layout_folder)。

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