You can use some sort of way to track which form triggered the submit, e.g.
# ResponsesController
class ResponsesController < ApplicationController
before_filter :require_authentication, except: :index
def require_authentication
session[:form_track_code] = params[:form_track_code] if [:put, :post].include?(request.method_symbol) && params[:form_track_code].present?
redirect_to signin_path unless signed_in?
end
end
# SessionsController
class SessionsController < ApplicationController # or devise?
def create
@form_track_code = session.delete[:form_track_code]
super # or whatever you implemented
end
end
# create.js.erb
<% if signed_in? %>
$('#ajax-modal').modal('hide').empty();
<% if @form_track_code.present? %>
$('input[type=hidden][value="<%= @form_track_code %>"]').parents('form').submit();
<% end %>
<% else %>
$('#ajax-modal').html('<%= j render("sessions/form") %>').modal();
<% end %>
# application.js
$('form[data-remote=true]').each(function() { $(this).append('<input type="hidden" name="form_track_code" value="' + Math.random() + '" />'); });