【发布时间】:2017-06-28 15:43:40
【问题描述】:
我正在制作一个 Rails 应用程序。我的视图向我的服务器发送了一个 Ajax POST 请求以及一个电话号码。我在控制器中使用该电话号码来调用使用 Twilio API 向该号码发送短信的模型方法。
问题是即使Twilio API发送成功,在我看来AJAX成功函数并没有运行。是什么导致了问题?
这里是视图:
<% content_for(:after_js) do %>
<%= javascript_tag do %>
$(document).ready(function() {
$('form').submit(function() {
var phoneNumber = $(this).serialize();
var submit = $(this).find(":submit");
submit.attr("disabled", true);
$.ajax({
type: "POST",
url: $(this).attr('action'), //sumbits it to the given url of the form
data: phoneNumber,
dataType: "JSON"
}).success(function(json){
console.log("success", json);
submit.css("background-color", "green");
submit.val("success");
});
return false; // prevents normal behaviour
});
});
<% end %>
<% end %>
<%= form_tag(invite_with_twilio_reservation_path(@reservation, token: @reservation.token), method: "post") do %>
<%= label_tag(:number, "Send to:") %>
<%= text_field_tag(:number) %>
<%= submit_tag("send")%>
<% end %>
这里是控制器:
def invite_with_twilio
@reservation = Reservation.find(params[:id])
if params[:token] == @reservation.token
authorize @reservation
else
raise
end
number = params[:number]
status = @reservation.send_sms_invitation_to_number(number, current_user)
if status == true
render json: number, status: :ok
else
render json: number, status: :fail
end
end
这是模型:
def send_sms_invitation_to_number(number, user)
club_name = tables.first.club.name
account_sid = ENV['TWILIO_API_ACCOUNT_SID']
auth_token = ENV['TWILIO_API_AUTH_TOKEN']
Twilio.configure do |config|
config.account_sid = account_sid
config.auth_token = auth_token
end
@client = Twilio::REST::Client.new
if @client.messages.create(
from: "+13238005977" ,
to: "#{number}",
body: "Hey! Your buddy #{user.full_name}, wants to invite you to a reservation in #{club_name}, on the
#{date}. Follow this link to accept his invitation and coordinate with your friends. #{Rails.application.routes.url_helpers.reservation_url(self, token: self.token, host: 'localhost')}.")
return true
else
return false
end
end
再次,短信发送成功。问题是没有调用 AJAX 成功函数,并且按钮既不改变文本也不改变颜色。
【问题讨论】:
标签: jquery ruby-on-rails ajax twilio