2012-02-12 5 views
0

내 레일 애플 리케이션에서 vestal_version을 사용하고 있습니다. 그리고 나는 위의 항목에있는 것과 관련하여 이전 버전 편집 링크를 어떻게 표시해야하는지 궁금합니다. 내 html.erb 코드는Vestal_versions : 레일 애플 리케이션에서 편집의 모든 버전을 나열

 <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.revert_to(params[:version].to_i) if params[:version]

있습니다. 그리고 면밀히 관찰하십시오. 모든 항목에 대해? version = 5입니다. 1,2,3,4 및 5 버전을 모두 갖고 싶습니다. 어떻게해야합니까?

업데이트 : 이미지가 댓글에 하이퍼 링크되어 있습니다. 지금은 이미지를 추가 할 수 없습니다.

+0

(HTTP [이미지 여기] : // uploadpic.org/storage/2011/oFUWvPJF0u0vqQwpXaWHySLo.png) –

답변

1

@page 대신 page을 사용하십시오. 각각의 반복과

<%= link_to "Previous Version", :version => page %> 

page 변화 @page은 그대로 유지하면서.

EDIT :

@page.versions.each 반복 이후 버전의 집합,이 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를 통해 버전을 되돌려 야합니다.

되돌리기를하면 변경 사항이 무효화되고 변경 사항이 취소되지 않습니다. page이 버전 4이고 버전 2로 되돌아 가면 버전 3 및 4는 삭제되지 않습니다. 버전 은 버전 2로 되돌아갑니다.

#revert_to 되 돌리지 만 저장하지 않습니다. , 저장 복귀 제대로 #revert_to!를 사용하려면 #revert_to!


사용하려면 컨트롤러 액션에 넣어해야합니다.

예, 당신의 pages 컨트롤러 :에서

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 

당신의 routes.rb :

resources :pages do 
    member do 
    post 'revert_to/:version_id' => 'pages#revert', :as => :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 %> 
+0

그것은 '정의되지 않은 메소드'를 제공합니다. on 'for # '오류가 발생했습니다. 또한 실행 취소 또는 되돌리기는 어떻게 저장합니까? 왜냐하면 내가/pages/2에 갈 때 변경 사항이 적용되지 않기 때문에 –

+0

그냥': version => page'를 사용하는 것이 목적을 해결합니다. 비록 내가 displayd되는 첫 번째 편집 twea해야 할 수도 있습니다. 이후 불필요하거나하지 않을 수 있습니다. 나는 볼 것이다. 하지만 지금 버전 편집을 어떻게 저장합니까? –

+0

이 질문에 나를 도울 수 있습니까? –

관련 문제