我有这个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
&POST
或Ajax
方法了一点,但我不知道如何利用它们来针对特定的控制器和行动。
发送Ajax调用
$(".edit").click(function(){
if ($(this).hasClass("update")){
$.ajax({
type: "PUT",
url: "/sections/<%= section.id %>"
});
} else {
//do something else
};
})
为了解决ActionController::InvalidAuthenticityToken
问题上Ajax调用我们也应该送authenticity_token
。
$.ajax({
url: '/sections',
data: { authenticity_token: $('[name="csrf-token"]')[0].content,
id: <%= section.id %> },
method: 'POST',
success: function (res) {
....
}
});