我有这个作为我的mongoid doc:
{
_id: ObjectId("52eec35e6b65762732000000"),
draftees: [
"52e93c266b657641d5000000",
"52e96a676b6576431d010000",
"tom"
],
user_id: "52eac4d16b657603d8010000"
}
当我尝试通过ajax更新时:
$.ajax({
type: "POST",
url: "/draft_lists",
data: {"draft_list":{
"draftees":["bill", "bob", "zeak"]}
},
success: function(){
alert('success!');
},
error: function(){
alert('error!');
}
})
这没有任何作用。
我一直在努力解决如何格式化draftees数组,以便它更新db,但无济于事。我究竟做错了什么?
注意:Ajax请求是通过firebug控制台进行的。当我的draftees的模型类型是“String”但不是“Array”时工作...所以我知道ajax请求正在工作。 控制器:
def index
@players = Player.all
@draft_lists = DraftList.where(user_id: current_user._id)
end
def create
#If user's draft doesn't exist, create their draft. If it does, update to their preference, based on current_user._id
draft_list = DraftList.find_or_initialize_by(user_id: current_user._id)
draft_list.update(draft_list_params)
respond_to do |format|
if @draft_list.save
format.html { redirect_to @draft_list, notice: 'Draft list was successfully created.' }
format.json { render action: 'show', status: :created, location: @draft_list }
else
format.html { render action: 'new' }
format.json { render json: @draft_list.errors, status: :unprocessable_entity }
end
end
end
答案 0 :(得分:1)
原来这是Rails 4中强参数的问题。我需要允许:
def draft_list_params
params.require(:draft_list).permit(:user_id, :draftees => [])
end