用Javascript调用Rails的动作

11

我在我的代码中有一个link_to,它调用控制器中的update操作:

<%= link_to((image_tag("lock_closed.svg", :class => "edit")), :controller => "sections", :action => "update",:id => section.id, :remote => true) %>


但是我真的想通过一些javascript和普通的图像标记来调用update操作。

所以类似于这样:

<%= image_tag("lock_closed.svg", :class => "edit", :id => "update-section", "data-section-id" => section.id) %>

还有:

$(".edit").click(function(){
    if ($(this).hasClass("update")){
    // call update action
    } else {
    //do something else 
    };
})
这种方式能否调用动作?我找到了一些关于使用 GETPOSTAjax 方法的信息,但不确定如何利用它们来定位特定的控制器和动作。
这种方式能否调用动作?我了解到可以使用 GETPOSTAjax 方法,但不确定如何利用它们来指定特定的控制器和动作。
2个回答

18

发送 Ajax 请求

$(".edit").click(function(){  
  if ($(this).hasClass("update")){     
    $.ajax({
      type: "PUT",
      url: "/sections/<%= section.id %>"
    });
  } else {
    //do something else 
  }; 
})

0
为了解决在ajax调用中出现的问题,我们还应该发送authenticity_token
 $.ajax({
   url: '/sections',
   data: { authenticity_token: $('[name="csrf-token"]')[0].content, 
           id: <%= section.id %> },
   method: 'POST',
   success: function (res) {
     ....
  }
}); 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接