在我的Rails应用程序中,我使用FullCalendar Rails gem并尝试使用jQuery/AJAX创建用户“预订”。我目前正在处理我的个人资料显示页面上脚本标记中的fullcalendar javascript,因为我不确定如何访问erb文件之外的动态路由。不幸的是,我的AJAX似乎并没有工作。 select函数仍然表现得应该如此,但AJAX没有任何事情发生,因为我没有收到成功或失败的消息,并且没有任何内容显示在我的网络选项卡中。我猜我没有正确设置url路径,我也假设我的AJAX设置可能不正确。更新:我实际上得到一个控制台错误,现在当我提交一个事件显示在fullcalendar JavaScript文件本身:'未捕获TypeError:无法读取属性'_calendar'未定义'。我不确定这是从哪里来的,而且我的网络选项卡中没有任何内容显示在ajax请求中。如何在Rails中将动态路由传递给AJAX POST请求
<script>
$(document).ready(function() {
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
defaultDate: '2016-01-12',
selectable: true,
selectHelper: true,
select: function(start, end) {
var title = "Unavailable";
var eventData;
eventData = {
title: title,
start: start,
end: end,
color: 'grey'
};
$('#calendar').fullCalendar('renderEvent', eventData, true); // stick? = true
$('#calendar').fullCalendar('unselect');
$.ajax({
method: "POST",
data: {start_time: start, end_time: end, first_name: title, color: 'grey'},
url: "<%= profile_bookings_url(@profile) %>",
success: function(data){
console.log(data);
},
error: function(data){
alert("something went wrong, refersh and try again")
}
})
},
editable: true,
eventLimit: true, // allow "more" link when too many events
events: window.location.href + '.json'
});
});
上面的选择功能添加一个事件到与jQuery日历。我想要通过我的AJAX发生的事情是将该事件提交给我的预订控制器中的预订创建操作。
def create
@profile = Profile.friendly.find(params[:profile_id])
@booking = @profile.bookings.new(booking_params)
if @booking.save
flash[:notice] = "Sending your booking request now."
@booking.notify_host
redirect_to profile_booking_path(@profile, @booking)
else
flash[:alert] = "See Errors Below"
render "/profiles/show"
end
end
任何人都可以帮我修复那个AJAX调用吗?我之前没有真正使用它,所以任何帮助将不胜感激!如果有任何其他信息/代码我应该发布,请让我知道。
ajax调用了吗?检查您的浏览器网络选项卡以验证。 – DevMarwen
也可以通过这个'url:“<%= profile_bookings_url(@profile)%>”' – DevMarwen
丑陋而不会分离到一个js文件来改变这个'url:“{<%= profile_bookings_url(@profile)%>}”' 。 ...简单的方法是添加''然后在你的js文件中访问这个变量 – charlietfl