支架代码的参数太少

时间:2013-09-26 18:11:20

标签: ruby-on-rails ember.js

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(也许有一个优雅的降级好处)。你能告诉我为什么会抛出这个错误和/或我怎么能避免它?

Rails方法

  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

1 个答案:

答案 0 :(得分: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