我正在尝试以“rails 方式”来做到这一点,因为我正在学习 rails 并想了解它。
这是我的“问题”。
我有一个简单的订阅表单,在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 响应)但没有任何绑定事件触发。 ...我知道它正在工作,因为当我将事件绑定到 $(document) 而不是 $('#subscribe-form') 它工作正常...
为什么?