我一直绞尽脑汁试图找出我在这里做错了什么 - 我正在尝试发送带有一些数据的ajax请求,然后打开一个模态形式:
var position = $(".exercise-list").sortable('toArray');
var positionData = "["+position+"]"
$.ajax({
url: window.location.href + '/create_workout_routine',
method: 'POST',
data: {
position: positionData
},
success: (function() {
return false
}),
error: (function(XMLHttpRequest, textStatus, errorThrown) {
alert("Status: " + textStatus); alert("Error: " + errorThrown);
return false
})
});
$('#createWorkoutModal').modal('show');
当我尝试console.log(positionData);我得到了
[4,2]
这正是我需要的。与我的日志相同:
Started POST "/workouts/new/create_workout_routine" for 127.0.0.1 at 2014-12-10 18:52:11 -0600
Processing by WorkoutsController#new as */*
Parameters: {"position"=>"[4,2]"}
这是我的控制器:
def create
exercise_order = params[:position]
@workout = Workout.new(workout_params)
WorkoutRoutine.create(
exercise_order.each_with_index.map { |x,i|
{:exercise_id => x,
....
}
}
)
...
end
当我的createWorkoutModal弹出时,我提交表单,并收到此错误:
NoMethodError (undefined method `each_with_index' for nil:NilClass):
app/controllers/workouts_controller.rb:29:in `create'
我还尝试将模态弹出包含在ajax请求的成功功能中,并且没有运气,以及摆脱“返回错误”部分。我很困惑,为什么当我看到params通过时,它给我'nil',任何帮助都非常感谢!
答案 0 :(得分:0)
替换控制器中的以下行
exercise_order = params[:position]
用这个
exercise_order = params["position"]