0

私は別のスクリーンの上に開くモーダルを持っています。基本画面には、AJAXを使用してそのページの結果をフィルタリングするフィルタメソッドがあります。Rails:モーダルアクション/サブミット後にページを更新しない

私は画面上の結果をフィルタリングした後、モーダルを開き、モーダルのフォームに対してアクションを実行できます。しかし、私はリダイレクト/リフレッシュを実行したくありません。

提出を実行しているときにこれを行うにはどうすればよいですか?

私のモーダルリンクのようである:

<%= link_to this_path(user_id: user.id), class:"modal-link", data: {"modal-url" => this_path(user_id: user.id)} do %><span><i class="fa fa-plus"></i><% end %> 

モーダルは十分に標準です:

<div class="modal form-modal"> 
    <div class="modal-container"> 
     <div class="modal-dialog modal-dialog-wide"> 
      <button class="close">&times;</button> 
      <div class="modal-content"> 
       <div class="modal-header"> 
        <h2 class="hdg-b">Edit This</h2> 
       </div> 
       <div class="modal-body"> 
        <div id="error_explanation"></div> 
        <%= render 'form', form_path: action_path, form_method: :put, create: false %> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 

AJAXがあまりにもある:

MyProject.onPageLoad(function() { 
    var form = $('.edit_site_scope'), 
    onSubmit = function(event) {  //callback handler for form submit 
       event.preventDefault(); 
       var form  = $(this), 
       url   = form.attr("action"), //get form action: 
       type   = form.attr("method"), 
       data   = form.serialize(); 
       var location = window.location.href; 

       var posting = $.ajax({ 
        type: type, 
        url: url, 
        data: data, 
        dayaType: "json", 
        success:function(data, textStatus, jqXHR) 
        { 
        $('.modal').remove(); 
        window.location = location; 
        $('#contact-tab-submit').show(); 
        }, 
        error: function(jqXHR, textStatus, errorThrown) 
        { 
        $('#error_explanation').html(''); 
        errors = jqXHR.responseJSON; 
        $.each(errors, function(key, value) { 
         $('#error_explanation').append('<div class="alert alert-dismissable" id="alert-message"><i class="fa fa-exclamation-triangle"></i>' + value + '<div class="alert-close">Close</div></div>'); 
        }); 
        $('#contact-tab-submit').show(); 
        } 
       }); 

       window.setTimeout(function() { 
        $(".alert").fadeTo(500, 0).slideUp(500, function(){ 
         $(this).remove(); 
        }); 
       }, 5000); 

       return false; // prevent default when submit button clicked 
    }; 
    if (form.size() !== 0) { 
     form.submit(onSubmit); 
    } 
}); 

そしてここでは、上の私のコントローラのアクションでありますフォーム提出:

def action_to_be_performed 
    @this_thing = ThisThing.where(id: params[:id]).first 
    @this_thing.update(this_things_params) 
    flash[:success] = "Successfully performed the action." 
    render json: @this_thing 
    rescue => error 
    Rails.logger.error "Exception caught updating this.\nCause: #{error}\n" + error.backtrace.join("\n") 
    render json: @this_thing.errors.full_messages, status: :bad_request 
    end 

私はまだモーダルで苦労しています。私はAJAXで推測します。アクションを実行し、モーダルを閉じて、現在のページを開いたままにするにはどうすればよいですか?

答えて

0

私はドライブの家で簡単な解決策を見つけました。私のJavascriptで、次の行:

window.location.reload(); 

window.location = location; 

に変更することができます

関連する問題