Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Vestal_版本:列出rails应用程序中编辑的所有版本_Ruby On Rails_Version - Fatal编程技术网

Ruby on rails Vestal_版本:列出rails应用程序中编辑的所有版本

Ruby on rails Vestal_版本:列出rails应用程序中编辑的所有版本,ruby-on-rails,version,Ruby On Rails,Version,我正在rails应用程序中使用vestal_版本。我想知道如何显示以前版本的编辑链接,以及上面条目中的内容。我的html.erb代码是 <tbody> <% @page.versions.each do |page| %> <tr class="odd"> <td><input t

我正在rails应用程序中使用vestal_版本。我想知道如何显示以前版本的编辑链接,以及上面条目中的内容。我的html.erb代码是

        <tbody>
                        <% @page.versions.each do |page| %>
                        <tr class="odd">
                          <td><input type="checkbox" /></td>
                          <td> </td>
                          <td><%= page.created_at%></td>
                          <td>
                          <% if params[:version] %>
                          <%= link_to "Previous Version", :version => @page.version-1 %>
                          <%end%>
                        </td>
                        </tr>


                  </div>
         <% end %>

@page.version-1%>
在控制器中我有
@page。如果参数[:version]

我已经附加了一个链接到截图。如果仔细观察。所有条目的?版本=5。我想要所有的版本都是1,2,3,4和5。我该怎么做


更新:图像在评论中被超链接。目前不允许添加图像。

使用
页面
而不是
@page

<%= link_to "Previous Version", :version => page %>
<% @page.versions.each do |version| %>
  <tr class="odd">
    <td><input type="checkbox" /></td>
    <td> </td>
    <td><%= version.created_at%></td>
    <td>
    <%= link_to "Show Version", :version => version %>
    </td>
  </tr>
<% end %>
此方法仅显示版本。实际上,恢复版本应该通过POST完成,因为您正在对数据库进行更改

还原会否定更改,但不会放弃更改。如果
页面
处于版本4,而您恢复到版本2,则不会删除版本3和版本4。版本号将恢复为2,但将作为版本本身计算

#还原到
执行还原但不保存。要还原和保存,请使用
#还原到


要正确使用
,请还原到,您需要将其放入控制器操作中

例如,在您的
页面中
控制器:

def revert
  @page = Page.find params[:id]
  if @page.revert_to!(params[:version_id]) # <= revert_to!
    redirect_to @page
  else
    render :text => "Did not revert"
  end
end
那么在你看来,

<% @page.versions.each do |version| %>
  <tr class="odd">
    <td><input type="checkbox" /></td>
    <td> </td>
    <td><%= version.created_at %></td>
    <td>
    <%= link_to "Show Version", :version => version %>
    </td>
    <td>
    <%= button_to "Revert to this version", revert_page_path(@page, version.id) %>
    </td>
  </tr>
<% end %>

版本%>

Its为#
错误提供了一个
未定义的方法“版本”。另外,如何保存撤消或恢复?因为当我转到/pages/2时,更改没有很好的效果,只有
:version=>page
就解决了这个问题。虽然我可能需要对显示的第一个编辑进行修改。因为,这是不必要的,也可能不是。我看看。但是现在我如何保存版本编辑?你能帮我回答这个问题吗?好的,我理解。但是,如何恢复更改并保存它们呢。我认为这是一种完全不同的方法。你也能帮我吗?非常感谢。再次修改答案。。。这是
#还原到
<% @page.versions.each do |version| %>
  <tr class="odd">
    <td><input type="checkbox" /></td>
    <td> </td>
    <td><%= version.created_at %></td>
    <td>
    <%= link_to "Show Version", :version => version %>
    </td>
    <td>
    <%= button_to "Revert to this version", revert_page_path(@page, version.id) %>
    </td>
  </tr>
<% end %>