私はレールを学んでおり、それを理解したいので、これを「レールの方法」でやろうとしています。
これが私の「問題」です。
home.html.erbに次のような簡単なサブスクリプション フォームがあります。
<%= form_tag( subscribe_newsletter_path , id:'subscribe-form', remote: true) do %>
<%= email_field(:subscription, :email, placeholder: 'ex: Giroud@Arsenal.com') %>
<%= submit_tag("Subscribe Now!", class: 'btn btn-success') %>
<% end %>
home.jsの私の JavaScript は次のとおりです。
$('#subscribe-form')
.on('ajax:beforeSend', function(){
console.log('before send');
})
.on('ajax:success', function(){
console.log('success');
})
.on('ajax:complete', function(){
console.log('complete');
})
.on('ajax:error', function(){
console.log('fail');
})
私のapplication.js
//= require jquery
//= require jquery_ujs
//= require_tree .
私のhome_controller.rbファイルは次のようになります(これは私にとってトリッキーになる場所です)
response = //Response message from mailchimp API. looks like that {"error"=>"bablabla@gmail.com is already subscribed to list Testing Rails. <a href=\"http://test.us6.list-manage1.com/subscribe/send-email?u=test&id=test&e=test==\">Click here to update your profile.</a>", "code"=>214}
render json: response, status: '200'
ajaxリクエストが発生し、コントローラーがメールを受信してmailchimp APIに送信し、ブラウザに送り返します(ステータス200、Chrome開発ツールでjson応答を確認できます)が、バインドイベントはトリガーされません。 ... $('#subscribe-form') ではなく $(document) にイベントをバインドすると正常に動作するため、動作していることはわかっています...
なんで?