사용자가 제출할 때 사용자가 로그인하지 않은 경우 로그인하라는 모달 프롬프트가 나타납니다. 사용자가 로그인하면 모달이 사라지지만 양식의 제출 버튼을 다시 클릭해야합니다. 성공적으로 로그인 한 후 모달이 사라지고 양식이 자동으로 제출되면 좋을 것입니다.RJS를 사용하여 .js.erb 파일에서 보낸 사람을 제출하려면 어떻게해야합니까?
그래서 내부에 sessions/create.js.erb
다음을 추가했습니다.
# create.js.erb
<% if signed_in? %>
$('#ajax-modal').modal('hide').empty();
$('#new_response).submit();
<% else %>
$('#ajax-modal').html('<%= j render("sessions/form") %>').modal();
<% end %>
이 방법은 효과가 있지만 확장 할 수는 없습니다. 전나무, 나는 다른 형태가 있을지도 모른다 - 단지 #new_response
- 그것은 유사한 행동을 필요로한다. 따라서 새 양식을 추가 할 때마다 create.js.erb
을 편집하고 if (form exists) submit();
을 추가해야합니다. 또한 모달을 사용하여 로그인 할 때 다른 양식이 사용되는 경우도 있습니다.
sessions/create.js.erb
에 양식이있을 때 양식을 제출하지만 양식 ID를 전혀 모르는 후크를 부착하는 방법이 있습니까? 기본적으로이를 전달해야합니다.
# responses/_form.html.slim
= form_for [@discussion, @response], remote: true do |f|
= f.label :content, "Comments"
= f.text_area :content, rows: 8
= f.submit "Reply", class: 'btn btn-success reply', 'data-disable-with' => "Reply"
# Responses controller
class ResponsesController < ApplicationController
before_filter :require_authentication, except: :index
...
def require_authentication
redirect_to signin_path unless signed_in?
end
end
감사합니다. 비슷한 결과를 얻었습니다. 유일한 차이점은 컨트롤러 안의 추적 코드를 삭제하고 세션을 삭제하지 않고'sessions/create.js.erb'에서 삭제한다는 것입니다. 접근 방법이 더 좋을 수도 있습니다. – Mohamad