Rails-如何接受JSON对象数组 [英] Rails - How to accept an array of JSON objects

查看:186
本文介绍了Rails-如何接受JSON对象数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在Rails网站上接受JSON对象数组?我发布类似

How do I accept an array of JSON objects on my rails site? I post something like

{'team':{'name':'Titans'}}

但是,如果我尝试发布带有对象数组的JSON.它只保存第一个对象.

However, if I try to post a JSON with an array of objects. It only saves the 1st object.

{'team':[{'name':'Titans'},{'name':'Dragons'},{'name':'Falcons'}]}

我的目标是在1个JSON文件中发送多个团队".我必须在Rails方面写些什么?

My goal is to send multiple 'teams' in 1 JSON file. What do I have to write on the Rails side?

在铁轨方面,我有类似的东西

On the rails side, I have something like

def create
  @team = Team.new(params[:team])
  @team.user_id = current_user.id

  respond_to do |format|
    if @team.save
      format.html { redirect_to(@team, :notice => 'Team was successfully created.') }
      format.json  { render :json => @team, :status => :created, :location => @team }
    else
      format.html { render :action => "new" }
      format.json  { render :json => @team.errors, :status => :unprocessable_entity }
    end
  end
end

我是否接受这些参数:对于每个元素,创建一个新的团队或其他东西?我是红宝石的新手,所以我们将不胜感激.

Do I take the params: and for each element, create a new team or something? I'm new to ruby so any help would be appreciated.

推荐答案

让我假设您发布

{'team':[{'name':'Titans'},{'name':'Dragons'},{'name':'Falcons'}]}

那么您的参数将是

"team" => {"0"=>{"chapter_name"=>"Titans"}, "1"=>{"chapter_name"=>"Dragons"}, "2"=>{"chapter_name"=>"Falcons"}}  

我的想法是

def create
  #insert user id in all team
  params[:team].each_value { |team_attributes| team_attributes.store("user_id",current_user.id) }
  #create instance for all team
  teams = params[:team].collect {|key,team_attributes| Team.new(team_attributes) }
  all_team_valid = true
  teams.each_with_index do |team,index|
    unless team.valid?
      all_team_valid = false
      invalid_team = teams[index]
    end 
  end 

  if all_team_valid
    @teams = []
    teams.each do |team|
      team.save
      @teams << team
    end 
    format.html { redirect_to(@teams, :notice => 'Teams was successfully created.') }
    format.json  { render :json => @teams, :status => :created, :location => @teams }
  else
    format.html { render :action => "new" }
    format.json  { render :json => invalid_team.errors, :status => :unprocessable_entity }
  end 

end 

这篇关于Rails-如何接受JSON对象数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆