programing

레일에서 POST를 사용하여 redirect_to

nasanasas 2020. 12. 8. 08:17
반응형

레일에서 POST를 사용하여 redirect_to


POST 방법을 사용하여 리디렉션 할 수 있습니까?
아니면 항상 GET을 사용하여 리디렉션해야합니까?

이를위한 사용은 사용자에게 추가 단계를 도입하지 않고 전자 상거래 사이트에 대한 주문 프로세스의 마지막 단계에서 데이터를 지불 프로세서로 전송하는 것입니다.


POST 요청으로는 리디렉션이 불가능하며 HTTP / 1.1 프로토콜일부입니다 .

결제 프로세서에 게시 할 양식 데이터가 포함 된 다른 단계를 도입하거나 애플리케이션에서 게시물을 보낼 수 있습니다 (PROTX로 작업 할 때 수행 한 작업).


모든 제품 및 배송비 등이 포함 된 요약 페이지를 표시하여 문제를 "해결했습니다". 일반적인 "구매를 확인하고 결제하려면 아래 계속 버튼을 클릭하십시오"유형의 메시지가 표시됩니다. 계속 버튼을 누르면 사이트가 제품 데이터와 모든 것을 결제 프로세서에 게시합니다.

짧은 대답은 -가 이다 사용자에 대한 또 다른 단계. 그러나 핵심은 가능한 한 자연스럽고 결제 경험의 일부가되도록 만드는 것입니다. 이렇게하면 "단지 또 다른 단계"만큼 많이 오지 않습니다.

당신은 그러나 않습니다 더 나은 방법을 건너, 나는 그것이 :) 무엇인지 듣고 매우 관심이 있습니다


간단한 자바 스크립트 줄을 사용하면 POST 양식이 자체적으로 게시되도록 할 수 있습니다 ( form.submit () ). 그런 다음 양식을 숨기고 양식이 결제 처리자에게 제출되는 동안 사용자에게 간단한 "잠시 기다려주십시오 ..."메시지를 표시 할 수 있습니다.


아이디어는 후드 아래에서 : post 메소드로 양식을 생성하는 동안 '리디렉션'을 만드는 것입니다.

나는 같은 문제에 직면하고 해결책을 gem으로 추출 repost했기 때문에 모든 작업을 수행하므로 양식으로 별도의 뷰를 만들 필요가 없으며 redirect_post()컨트롤러 에서 제공되는 gem 함수 를 사용하십시오.

class MyController < ActionController::Base
...
  def some_action
    redirect_post('url', params: {}, options: {})
  end
...
end

html 해킹 : 대신 redirect_to,이 html 템플릿 렌더링 (Alsciende 답변 기반)

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>

<form id="step" name="step" action="<%= URL %>" method="POST">
  <!-- optional params -->
  <input type='hidden' name='token' value='e7295d6d1cd512a8621f1de5965b90a' />

</form>

<script type="text/javascript">
 $(document).ready(function () {
   setTimeout(function () {
     $("#step").submit();
   }, 0);
 });
</script>

참고 URL : https://stackoverflow.com/questions/985596/redirect-to-using-post-in-rails

반응형