私はRailsには新人ですが、thisの回答で私に電子メールを送信するフォームをまとめましたが、成功セクションでコードを実行します。Railsのajaxフォームは電子メールを送信しますが、 "成功"のコードは実行しません
これはjQueryのAjaxコードである:
$('#sub_form').submit(function(e) {
e.preventDefault();
}).validate({
rules: {
email: {
required: true,
email: true
},
},
submitHandler: function (form) {
var btn = $('#sub_btn');
btn.button('loading');
setTimeout(function() {
btn.button('reset');
}, 3000);
$.ajax({
type: 'POST',
url: '/subscribe',
dataType: 'json',
async: true,
data: {
sub_email: $('#sub_email').val(),
},
success: function (json) {
$('#sub_output').html("Thank you!");
$("#sub_email").prop('disabled', true);
},
});
return false;
}
});
これはコントローラである:
class Welcome3Controller < ApplicationController
def subscribe
EmailMeMailer.confirmation(params[:sub_email]).deliver_now
respond_to do |format|
format.json { head :ok }
end
end
end
これは形式である:
フォームがIが受信転記さ<%= form_for :subscribe, html: { id: 'sub_form' } do |f| %>
<input type="email" name="email" placeholder="Your email address" id="sub_email">
<button class="btn btn-success" type="submit" id="sub_btn">Subscribe</button><br>
<p id="sub_output" class="lead" style="color: white;"></p>
<% end %>
電子メールは正常ですが、成功コードは実行されません(例:「ありがとうございました!」)
add:remote => form_forにtrue – Wordica