В чем разница между render :action => "new"
и render :template => "users/new"
? Я слышал этот шаблон рендеринга, который мы можем использовать для представлений от других контроллеров. Разве это или есть какая-то разница в рендеринге между ними? Для render: template, необходимо ли иметь определенное действие или сама страница просмотра?
Разница между рендером: действие и рендер: шаблон
Ответ 1
Нет разницы. render :template => 'some/thing'
- это то же самое, что только render 'some/thing'
, а также то же, что и render :action => 'thing'
, если мы находимся в контроллере some
.
От Руководство по Ruby On Rails;
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
Ранее вызов render "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