Как вы выводите JSON из Ruby on Rails? - PullRequest
3 голосов
/ 20 июня 2011

Я ищу модель, которая создается / обновляется через AJAX. Как вы делаете это в Ruby on Rails?

Кроме того, более конкретно: как вы выводите JSON в RoR?

def create
  response = {:success => false}
  @source = Source.new(params[:source])
  if @source.save
    response.success = true
  end
  render :json => response.to_json
end

Ответы [ 3 ]

8 голосов
/ 20 июня 2011

Все, что вам нужно сделать, это вызвать render: json с объектом, например:

render :json => my_object

Для большинства объектов это будет просто работать. Если это объект ActiveRecord, обязательно посмотрите as_json, чтобы увидеть, как это работает. Для вашего случая, показанного выше, ваш хеш будет преобразован в json и возвращен.

Однако у вас есть ошибка: вы не можете получить доступ к ключу успеха через response.success - вместо этого вы должны сделать ответ [: success]

3 голосов
/ 22 июня 2011

Решение Джимоти действительно хорошее, но я считаю, что оно не масштабируется в долгосрочной перспективе. Rails предназначен для модели, представления и каркаса контроллера. Прямо сейчас JSON обманут из вида в рельсах по умолчанию. Однако есть отличный проект под названием RABL, который позволяет просматривать JSON. Я написал несколько аргументов, почему я считаю, что это хороший вариант и как быстро с ним работать. Посмотрите, полезно ли это вам: http://blog.dcxn.com/2011/06/22/rails-json-templates-through-rabl/

0 голосов
/ 06 января 2014
@source = Source.new(params[:source])

respond_to do | f |
  f.html {
    # do stuff to populate your html view
    # maybe nothing at all because @source is set
  }

  f.any(:xml, :json) { 
    render request.format.to_sym => @source 
  }
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...