我有一个Rails应用程序,让用户右键单击DOM项目以获取使用工具jQuery-contextMenu实现的上下文菜单。当用户点击该菜单中的项目时,将执行Rails操作。到目前为止,所有这些实际上都起作用。然后我希望页面能够随着数据的改变状态而刷新。 Rails的调试控制台声称页面显示正确,但我的浏览器没有显示任何区别。我究竟做错了什么?jQuery执行Rails命令但不显示结果
这是我的HTML页面中代表上下文菜单的脚本。如果您单击deletenode选项,则会发出$ .post请求。
<script>
$(function(){
$('#treemenu').contextMenu({
selector: 'span',
callback: function(key, options)
{
var nodeID = parseInt($(this).attr("id").substring(13), 10);
if(key == "deletenode")
{
$.post("/ontology/" + nodeID + "/delnode", { _method: 'post' });
}
else if(key == "deletearc")
{
}
else
{
}
// window.console && console.log(m) || alert(m);
},
items:
{
"deletenode": {name: "<%= t('ontologies.delete.delete_node') %>"},
"deletearc": {name: "<%= t('ontologies.delete.delete_arc') %>"},
}
});
});
</script>
由于Rails的路线,这导致这个Rails应用的控制器
def delnode
logger.debug 'Entered delnode ' + params[:id]
redirect_to ontologies_url, alert: 'testing delnode.'
end
这是调试器控制台上的输出。正如它说完成200,它实际上应该是好的。但重定向到索引操作实际上并没有发生。
Started POST "/ontology/1/delnode" for ::1 at 2017-01-08 19:04:52 -0800
Processing by OntologiesController#delnode as */*
Parameters: {"id"=>"1"}
User Load (1.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT 1 [["id", 1]]
Entered delnode 1
Completed 200 OK in 5ms (Views: 0.5ms | ActiveRecord: 1.0ms)
我尝试了很多不同的东西在其他帖子中建议,但没有任何结果显示页面。感谢您的帮助。
谢谢你,mrlew。这很好地解决了这个问题。 –