Добавить поддержку JSON в приложение Rails - PullRequest
1 голос
/ 28 мая 2010

Я экспериментирую с Rails и мне было интересно, что нужно для разрешения / добавления поддержки запросов JSON?

У меня установлена ​​ванильная версия Rails 2.3.5, и стандартные леса, кажется, обеспечивают поддержку HTML & XML запросов, но не JSON.

class EventsController < ApplicationController
  # GET /events
  # GET /events.xml
  def index
    @events = Event.all

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @events }
    end
  end

  # GET /events/1
  # GET /events/1.xml
  def show
    @event = Event.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @event }
    end
  end

...

Я новичок в этом, но выглядело бы так, как будто мне нужно было бы добавить строку формата в каждом методе в соответствии с:

format.js  { render :js => @event.json }

Разве это не может быть сделано автоматически? возможно, где-то есть шаблон, который мне нужно обновить ... или флаг, который я могу установить? Или, может быть, и, скорее всего, я совсем пропустил лодку?!?

1 Ответ

3 голосов
/ 28 мая 2010

Вы делаете:

format.json {render :json=>@event}

Отобразит активную запись JSON по умолчанию для модели

Опция простоты использования заключается в том, что вы можете написать приватный метод, который берет объект формата и объект для рендеринга, а затем, на основе формата, рендерит разные вещи. Пример:

class MyController<ApplicationController
  def show
    @event=Event.find(params[:id])
    respond_to do {|format| myRenderer(format,@event)}
 end
  ...
  private
  def myRenderer(fmt,obj)
    fmt.json {render :json=>obj}
    fmt.html
    fmt.xml {render :xml=>obj}
 end
...