我目前有一个Ajax请求,我不完全理解它给我的行为。首先,我不确定url
正在做什么?我是说这是在电话会议后重定向的地方,还是需要它的网址?我会发布代码并一路解释。
$(document).on('click','.delete-snitch', function() {
var snitchID = $(this).attr('data-snitch-id');
$.ajax({
type: 'DELETE',
url: '/snitches/' + snitchID,
success: function(){
$('#tr-for-snitch-' + snitchID).fadeOut
}
});
});
查看网址?当我使用它时,我得到404错误,找不到金色飞贼?我不确定为什么。但是,如果我只是让它渲染snitch索引页面,它仍然会刷新页面,这当然不是我想要的。我的问题是 - >在我的案例中,网址是做什么的?
def destroy
DestroySnitch.perform(snitch: @snitch)
respond_to do |format|
format.html do
redirect_to snitches_path, notice: "Snitch was successfully deleted."
end
format.js do
binding.pry
end
end
end
当我尝试进行调用并在format.js的块中放置一个绑定pry时,它没有击中它?知道我在这里做错了吗?
<%= form_for @snitch, html: { class: "form-actions", method: 'delete' } do |form| %>
<span class="button-text"><%= link_to 'NO WAY!', home_base_url_or_default(root_path), rel: "modal:close" %></span>
<input type="submit" class="button button--modal delete-snitch" data-snitch-id="<%= @snitch.token %>" value="Yes, delete it.">
<% end %>
答案 0 :(得分:0)
该表单的默认操作是发送一个'post'请求,导致页面刷新。由于您在单击函数中处理post请求,因此需要阻止默认操作,就像将prevent_default添加到该函数一样简单。您可能希望更改功能以侦听正在提交的表单
$(document).on('submit','.delete-snitch', function(event) {
var snitchID = $(this).attr('data-snitch-id');
$.ajax({
type: 'DELETE',
url: '/snitches/' + snitchID,
success: function(){
$('#tr-for-snitch-' + snitchID).fadeOut
}
});
event.prevent_default();
});
Rails有some helpers与AJAX合作,值得一读。