2013-09-26 4 views
1

Метод ниже в teams_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' 

Я скопировал код следуя @team.save способом из генератора каркасного Rails, так Я немного удивлен. Надеюсь, что он ответит 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 

Update, Следует также отметить, что, основываясь на номер строки сообщения об ошибке, метод, как представляется, обрабатывать формат, как HTML, однако, я хотел, чтобы это было обрабатывается как json

ответ

2

Я забыл поставить reply_to do | format | вокруг кода.

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 
Смежные вопросы