1

team_controller.rb 中的以下join方法通过使用 EmberJs 提交表单来发送以下数据

{"id"=>"3", "user_id"=>"42", "action"=>"join", "controller"=>"teams"}

记录是使用join下面的方法创建的(根据控制台),但是在save引发错误之后发生的事情的代码

ArgumentError (too few arguments):
  app/controllers/teams_controller.rb:145:in `format'
  app/controllers/teams_controller.rb:145:in `join'

我按照Rails脚手架生成器的方法复制了代码@team.save,所以我有点惊讶。希望它会以 json 响应,但我以 html 格式保留just because(也许有一个优雅的降级好处)。您能告诉我为什么会抛出该错误和/或如何避免它吗?

导轨方法

  def join

    @team = Team.find(params[:id])
    id = params[:user_id]
    @team.user_ids =  @team.user_ids.push(id)


   if @team.save
    format.html { redirect_to @team, notice: 'Joined Team' }
    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 

更新,我还应该注意,根据错误消息的行号,该方法似乎将格式视为 html,但是,我希望将其视为 json

4

1 回答 1

2

我忘了把respond_to 做|格式| 围绕代码。

 respond_to do |format|

  if @team.save
    format.html { redirect_to @team, notice: 'Joined Team' }
    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
于 2013-09-26T18:26:07.407 回答