세션과 관련된 더 좋은 방법이있을 수 있습니다. 차라리 두 번째 형식과 많은 자바 스크립트를 사용하여 세션 해시를 완전히 사용하지 않는 것이 좋습니다.
다음은 어떻게 처리할까요? 첫 번째 양식은 전혀 변경되지 않으며 리뷰라는 새로운 작업에 제출하십시오.
검토 작업은 검토를 위해 변경 사항을 표시하고 편집 링크와 확인 버튼을 표시합니다. 또한 이전 페이지의 양식을 검토 작업에 다시 제출할 숨겨진 요소로 다시 작성합니다.
확인 버튼이 업데이트 작업에 제출됩니다.
편집 링크를 클릭하면 검토 영역이 숨겨지고 이전 페이지에서 중복 된 것으로 표시됩니다. 여기
는 점 아래로 망치 몇 가지 예제 코드입니다 :
응용 프로그램/컨트롤러/example_controller.rb을
class ExampleController < ApplicationController
def edit
@example = Example.find(params[:id])
end
def review
@example = Example.find(params[:id])
@example.update_attributes(params[:example])
@example.valid?
end
def update
@example = Example.find(params[:id])
@example.update_attributes(params[:example])
if @example.save
redirect_to @example
else
render :action => :review
end
end
end
응용 프로그램/뷰/예/_form.html.erb :
<% form_form @example, :url => {:action => "review"} do |f|%>
...
Form inputs go here
...
<% end %>
app/views/examples/edit.html.erb :
<%= render :parital => form %>
응용 프로그램/뷰/예/review.html.erb :
<div id="review">
...
content for review goes here
...
<%= link_to_function "Edit", "$('review').hide(); $('edit').show()"
<% form_for @example do |f| %>
<%= hidden_field :attribute, @example.attribute %>
...
hidden_field for each attribute
...
<%= submit_tag "Accept These Changes" %>
<% end %>
</div>
<div id="edit" style="display:none">
<%= render :partial => 'form' %>
</div>
그래서 당신의 쇼 숨겨진 요소를 사용하는 것입니다 아약스/자바 스크립트 또는이 전체 페이지 리디렉션입니까? – Lukas
나는 내가 자바 스크립트 일 뿐이라는 점에서 분명하다고 생각했지만, 그렇다고 생각하지 않는다. 내 답변에 예제를 추가했습니다. – EmFi
review.erb 만 빼고 "편집"div를 먼저 표시 한 다음 "제출"을 누르면 리뷰 폼을 숨기고 표시합니다. 그것은 단지 관찰이다. 자바 스크립트를 사용하지 않으면이 작업을 수행하는 방법이 더 궁금합니다. JS를 사용하는 경우에도 JS 호환이 불가능할 수 있기를 원합니다. 동의하는 동안 이것은 쉬운 방법입니다. 나는 이렇게 할 수 있는지 확신 할 수 없습니다. – Lukas