如何将javascript数据发布到rails控制器操作?
我使用的拖放排序的一些名单,我有。我所需要的只是将下面的数据发送或发布到我的rails控制器操作,以便更新订单 这是我每次拖动列表时在控制台中得到的结果如何将javascript数据发布到rails控制器操作?,javascript,jquery,ruby-on-rails,ajax,ruby-on-rails-4,Javascript,Jquery,Ruby On Rails,Ajax,Ruby On Rails 4,我使用的拖放排序的一些名单,我有。我所需要的只是将下面的数据发送或发布到我的rails控制器操作,以便更新订单 这是我每次拖动列表时在控制台中得到的结果 list_46 0 list_45 1 list_38 2 list_44 3 list_39 4 list_37 5 这正是我需要将上述数据发送到的路径。我的路线设置正确 sortlists_boards POST /boards/sortlists(.:format) Javascript代码 jQuery(function() {
list_46
0
list_45
1
list_38
2
list_44
3
list_39
4
list_37
5
这正是我需要将上述数据发送到的路径。我的路线设置正确
sortlists_boards POST /boards/sortlists(.:format)
Javascript代码
jQuery(function() {
$('.listwrap').shapeshift();
return $('.listwrap').on('ss-rearranged', function(e) {
$(this).children().each(function() {
#I need to send/post these two lines below to sortlists_boards_path
console.log($(this).attr("id"))
console.log($(this).index())
});
});
});
一些可能有帮助的Github问题
在每次拖放时创建/更新一个JavaScript对象,并向控制器发送一个ajax请求,您可以在控制器中读取该对象并将其存储在数据库中。首先,修改JavaScript以创建一个有序对数组并将其发送到端点:
jQuery(function() {
$('.listwrap').shapeshift();
$('.listwrap').on('ss-rearranged', function(e) {
ordered_items = [];
$(this).children().each(function() {
ordered_items.push([$(this).attr("id"), $(this).index()]);
});
$.post('/boards/sortlists',
{ordered_items: JSON.stringify(ordered_items)},
function(data, status, jqXHR) {
// This is what gets rendered from your rails controller + action
});
});
});
然后,回顾一下它在Rails端的外观,并对其进行处理
class BoardsController < ApplicationController
# ...
def sortlists
logger.info params[:ordered_items]
end
# ...
end
输出将转到log/development.log请提供rake路由的输出好吗?sortlists_boards是命名路线,但不清楚终点是什么样的我更新了我的问题。sortlists_boards POST/boards/sortlists.:formathmm我收到500个内部服务器错误我在使用Jquery Sortable时遇到了这个问题,但我不知道如何使用shapeshift来实现这一点。我在Jquery Sortable$.post$this.data'update-list',this.Sortable'serialize'中使用了它,但shapeshift说您不能序列化Ok,这是因为我必须在我的sortlists方法中添加render nothing:true。这修复了服务器错误。但是,当我查看rails终端时,它显示参数:{ordered_items=>[]},但当我将列表拖动到不同的顺序时,没有任何变化。我的日志中没有显示任何内容。你能在客户端的post请求上运行console.logordered_items以查看其中是否有任何内容吗?你的权利那里没有任何内容我不能让此部分与你的代码一起工作,返回$'.listwrap'。在'ss-reased',function{};你能用我所有的javascript更新你的帖子吗。也许我用错了语法或者别的什么。这就是为什么里面什么都没有。