2017-05-11 9 views
1

POST 메서드에서 다시 리디렉션 한 후 layout.erb에서 모달을 자동으로 열려면 어떻게해야합니까?Sinatra - 리디렉션에서 부트 스트랩 모달을 여는 방법

<form method="post" action="/cart/remove-product"> 
    <input type="hidden" name="id" value="<%= item[:product_id] %>"> 
    <input type="hidden" name="item_count" value="<%= item[:count] %>" 
    <input class="btn btn-danger btn-sm" type="submit" value="x"> 
</form> 

전화 :

class CartController < ApplicationController 

post '/remove-product' do 
    remove_product_from_cart(request.cookies['cart_id'], params[:id], params[:item_count]) 
    redirect back 
+0

AJAX를 사용하여 트리거 할 수 있습니다. – bitsapien

답변

0

@bitsapien이 언급처럼, 당신은 실행할 수있는 카트에서 항목을 제거

<span class="btn btn-success" data-toggle="modal" data-target="#cart"> 

:

장바구니 모달 버튼 클릭에서 열립니다 ajax와 함께 - javascript/ajax를 사용하여 양식을 제출해야합니다. 나는 에 들어 가지 않습니다. 여기에 이미 간단한 검색으로 찾을 수있는 약 50 억 + 질문/답변이 있기 때문에 여기에 들어 가지 않습니다.

그러나 트리거하려면 Sinatra 조치가 xhr 요청 형식에 응답해야합니다. 응답 내부 xhr의 요청 형식 (index.html.erb, index.json.erb 등 같은) 당신은 당신이 필요가와에 대한 사용자를 리디렉션하는 경우 $('#my_modal').modal('show');

같은 것을 반환 할 것 몇 가지 이유가 아약스를 사용하여 양식을 제출할 수, 그럴 수 - "해키"하지만 - trigger의 키 (예)와 #my_modal의 값을 쿠키 나 세션을 설정 한 다음과 같은 일을 할이,

<% if session[:trigger] %> 
<script><%= "$('#{session[:trigger]}').modal('show');" %></script> 
<% session.delete(:trigger) %> 
<% end %> 

그것은이다 가장 예쁜 것은 아니지만 작동합니다.