response_with не работает в ruby ​​на рельсах.Зачем? - PullRequest
6 голосов
/ 16 декабря 2010

У меня есть метод post с именем join, который должен выполнять следующие действия: 1) создавать новый объект 2) отвечать объектом json

Вот мой код:

class GameController < ApplicationController

  respond_to :json

  def join
    @p = Player.new(:name => params[:name])
    @p.save!
    respond_with({:uuid => @p.uuid})
  end
end

Дляпо какой-то причине вызов response_with всегда завершается неудачей с этой ошибкой:

undefined method `model_name' for NilClass:Class

Если я изменю вызов response_with на что-то более простое, я все равно получаю ошибки, например:

respond_with "hello"

выдает эту ошибку:

undefined method `hello_url' for #<GameController:0x1035a6730>

Что я делаю не так ??Я просто хочу отправить им объект JSON обратно!

PS, мой файл маршрутов выглядит так:

  match 'join' => 'game#join', :via => :post

Ответы [ 2 ]

7 голосов
/ 16 декабря 2010

Я считаю, что методы respond_with требуют, чтобы вы передавали ресурс (@p) в качестве аргумента.Вот некоторая документация по методу .

Попробуйте:

respond_with @p, :only => [:uuid]

Вы также можете визуализировать json следующим образом:

render :json => { :uuid => @p.uuid }
4 голосов
/ 27 октября 2011

Также будет работать respond_with {:uuid => @p.uuid}, :location => nil

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...