我正在尝试将 jQuery-UI 可排序连接列表的位置保存到 Rails 后端。尝试将参数保存到数据库时,我遇到了 Rails 控制器操作问题。我得到的错误是TypeError (can't convert Symbol into Integer):
我发送的 Ajax POST 请求中的参数如下所示,看起来不错:
Activity:[{"id":"65","column":"48"},{"id":"65","column":"48"},{"id":"67","column":"48"}]
我的 Rails 控制器操作是这样的(我正在尝试使用 'id' 的 id 更新 Activity 并使用 'position' 和 day_id 的 'column' 更新属性位置:
def sort
JSON.parse(params[:Activity]).each_with_index do |x, index|
id = x["id"]
position = index+1
column = x["column"]
Activity.update_all(position = position, day_id = column, id = id)
end
render nothing: true
end
我在终端中收到此错误:
Started POST "/trips/sort" for 10.0.2.2 at 2012-11-04 23:52:30 +0000
Processing by TripsController#sort as */*
Parameters: {"Activity"=>"[{\"id\":\"66\",\"column\":\"49\"},{\"id\":\"66\",\"column\":\"49\"},{\"id\":\"67\",\"column\":\"49\"}]"}
Completed 500 Internal Server Error in 1ms
TypeError (can't convert Symbol into Integer):
如果有帮助,这是我的 jQuery AJAX 调用:
jQuery ->
$('[id*="day"]').sortable(
connectWith: ".day"
placeholder: "ui-state-highlight"
update: (event, ui) ->
neworder = new Array()
$(this).children().each ->
column = $(this).parent().attr("id").match(/\d+/)[0]
id = $(this).attr("id").match(/\d+/)[0]
neworder.push(
id: id
column: column
)
alert neworder
$.ajax
url: "sort"
type: "POST"
data: { Activity: JSON.stringify(neworder) }
).disableSelection()
我已经花了过去几个小时在这上面,只是想不通。我真的很感激时间和帮助。