web-dev-qa-db-fra.com

Différence entre render: action et render: template

Quelle est la différence entre render :action => "new" et render :template => "users/new"? J'ai entendu ce modèle de rendu que nous pouvons utiliser pour les vues d'autres contrôleurs. Est-ce bien cela ou y a-t-il une différence dans la disposition du rendu entre les deux? Pour render: template, est-il nécessaire d'avoir une action définie ou la page de visualisation elle-même est-elle suffisante?

35
rubyprince

Il n'y a pas de différence.
render :template => 'some/thing' est le même que juste render 'some/thing', ainsi que render :action => 'thing' si nous sommes dans le contrôleur some.

De Ruby sur 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'
66
christianblais

Auparavant, l'appel de render "foo/bar" dans une action de contrôleur était équivalent à render file: "foo/bar". Dans Rails 4.2, cela a été changé pour signifier render template: "foo/bar" au lieu. Si vous devez rendre un fichier, veuillez modifier votre code pour utiliser le formulaire explicite (render file: "foo/bar") au lieu.

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

3
user3118220