我在我的控制中调用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")%>
和
$(".edit").click(function(){
if ($(this).hasClass("update")){
// call update action
} else {
//do something else
};
})
是否可以通过这种方式调用动作?我一直在使用GET
&amp; POST
或Ajax
方法,但我不确定如何利用它们来定位特定的控制器&amp;动作。
答案 0 :(得分:17)
发送Ajax电话
$(".edit").click(function(){
if ($(this).hasClass("update")){
$.ajax({
type: "PUT",
url: "/sections/<%= section.id %>"
});
} else {
//do something else
};
})
答案 1 :(得分:0)
为了解决ActionController::InvalidAuthenticityToken
的问题
在ajax调用中,我们还应该发送 authenticity_token
。
$.ajax({
url: '/sections',
data: { authenticity_token: $('[name="csrf-token"]')[0].content,
id: <%= section.id %> },
method: 'POST',
success: function (res) {
....
}
});