vestal_versions et question HTMLDiff de réversion
-
02-10-2019 - |
Question
Je devine qu'il ya probablement un moyen plus facile de faire ce que je fais pour que le code est moins difficile à manier.
J'ai eu du mal à comprendre comment utiliser la méthode revert_to ... je voulais quelque chose où je pourrais appeler en même temps deux versions différentes, mais cela ne semble pas être la façon dont fonctionne de vestal_versions.
Ce code fonctionne, mais je me demande si je fais quelque chose de plus difficile qu'il doit être et je voudrais savoir avant de plonger plus profondément.
@article = Article.find(params[:id])
if params[:versions]
v = params[:versions].split(',')
@article.revert_to(v.first.to_i)
@content1 = @article.content
@article.revert_to(v.last.to_i)
@content2 = @article.content
end
Dans le cas où vous vous demandez, j'utilise en conjonction avec cette HTMLDiff pour obtenir les changements de version.
<div id="content">
<% if params[:versions] %>
<%= Article.diff(@content1, @content2) %>
<% else %>
<%= @article.content %>
<% end %>
</div>
La solution
Je pense que vous êtes à la recherche de la méthode de changes_between
qui fournit vestal_versions.
@article = Article.find(params[:id])
if params[:versions]
v = params[:versions].split(',')
@article_changes = @article.changes_between(v.first.to_i, v.last.to_i)
end
alors @article_changes
est un hachage des changements entre les versions. Quelque chose comme
{"content" => ["first version content", "second version content"]}
Peut-être différent en fonction de ce que vous avez versionné.