1

我猜可能有一個更簡單的方法來做我在做的事情,以便代碼不太笨拙。vestal_versions和htmldiff返回問題

我很難理解如何使用revert_to方法...我想要的東西,我可以同時調用兩個不同的版本,但這似乎不是vestal_versions的工作方式。

此代碼有效,但我想知道如果我做了比自己需要的更難的事情,並且希望在深入研究之前找出答案。

@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 

如果您想知道,我將這個與HTMLDIFF結合使用以獲取版本更改。

<div id="content"> 
    <% if params[:versions] %> 
    <%= Article.diff(@content1, @content2) %> 
    <% else %> 
    <%= @article.content %> 
    <% end %> 
</div> 

回答

2

我認爲您正在尋找vestal_versions提供的changes_between方法。

@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 

然後@article_changes是版本之間變化的散列。類似於

{"content" => ["first version content", "second version content"]} 

也許根據您的版本不同而不同。