Rails で AJAX の方法でフォーム処理を解決するのに苦労しています。私が持っているさまざまな部分と、どこに疑問があるかを説明しようと思います。
これが私のnew.html.erbの外観です。
<%= simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name), :remote => true) do |f| %>
<%= f.input :email, :label => false, :placeholder => 'Enter Email' %>
<%= f.submit "Step inside", :id => 'invitation_button' %>
<% end %>
<div id="request_invite">
</div>
ご覧のとおり、私は を持っている:remote => true
ので、送信は AJAX 経由で行われます。また、送信が成功した場合に備えて、パーシャルで満たされる空のコンテナー (#request_invite) があります。
私のregistrations_controller.rb (メソッドの作成)は次のようになります。
def create
build_resource
if resource.save
if resource.active_for_authentication?
sign_in(resource_name, resource)
respond_with resource, :location => after_sign_up_path_for(resource)
else
expire_session_data_after_sign_in!
respond_with resource, :location => after_inactive_sign_up_path_for(resource)
end
else
clean_up_passwords resource
respond_with resource
end
end
私の疑問はここにあります。送信が成功したかどうかを JS に知らせるには、何を記述すればよいですか。_thank_you.html.erb
成功した場合は、#request_invite コンテナーに呼び出されたパーシャルをレンダリングしたいと考えています。うまくいかなかった場合は、フォームにエラーを表示したいと思います。
ここに、AJAX 応答を処理する Javascript ファイルがあります。
$('document').ready(function() {
$("#new_user").on('ajax:success', function(data, status, xhr)
{
alert("test");
})
});
現在、成功したかどうかを知る方法がないため、アラート(「テスト」)が常に表示されます。
どうもありがとう、私は自分自身を十分に説明したことを願っています.