使用Rails了解Ajax请求

时间:2016-10-02 15:16:55

标签: javascript jquery ruby ajax

我目前有一个Ajax请求,我不完全理解它给我的行为。首先,我不确定url正在做什么?我是说这是在电话会议后重定向的地方,还是需要它的网址?我会发布代码并一路解释。

AJAX

 $(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索引页面,它仍然会刷新页面,这当然不是我想要的。我的问题是 - >在我的案例中,网址是做什么的?

CONTROLLER

    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

 <%= 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 %>

1 个答案:

答案 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合作,值得一读。