Rails 4 / Mongoid无法发布数组

时间:2014-02-02 22:34:25

标签: ruby-on-rails-4 mongoid

我有这个作为我的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

1 个答案:

答案 0 :(得分:1)

原来这是Rails 4中强参数的问题。我需要允许:

def draft_list_params
  params.require(:draft_list).permit(:user_id, :draftees => [])
end