Rails : Mise à jour de ActionView::Base.new

2

Avatar QuozPowa
QuozPowa
Auteur Admin
Avis aux amateurs de Ruby On Rails, dans ses dernières versions (à partir de la 6), les développeurs ont fait évoluer la classe Base du module ActionView utilisée pour effectuer le rendu manuel des templates.
Code source disponible ici :
https://github.com/rails/rails/blob/6-1-stable/actionview/lib/action_view/base.rb

La précédente signature du constructeur permettait d'instancier de la façon suivante :
view = ActionView::Base.new(ActionController::Base.view_paths, {})

Désormais avec la nouvelle version, une instance de LookupContext est attendue en premier et il faut procéder de cette manière :
context = ActionView::LookupContext.new(ActionController::Base.view_paths)

view = ActionView::Base.with_empty_template_cache.new(context, {}, nil)

De mon côté, je constate qu'au delà du premier appel pour un même template, le code plante (erreur 500) car il cherche à récupérer le template par une méthode qui n'existe pas au moment du render. Y'a-t-il des choses à changer ce à niveau là ?

0 0
Liens joints à ce post

rails/base.rb at 6-1-stable · rails/rails · GitHub

Ruby on Rails. Contribute to rails/rails development by creating an account on GitHub.

github.com
Avatar QuozPowa
QuozPowa
Auteur Admin
Finalement j'ai réécrit le code pour utiliser ActionController:Render :
https://api.rubyonrails.org/classes/ActionController/Renderer.html

0 0
Liens joints à ce post

ActionController::Renderer

ActionController::Renderer allows you to render arbitrary templates without requirement of being in controller actions. You get a concrete renderer class by invoking ActionController::Base#renderer.

api.rubyonrails.org