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
答案 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