Подтвердить что ты не робот

Пропустить формат JSON в рельсах

Когда вы создаете эскиз рельсов с помощью команды типа rails g scaffold Thing, есть ли способ избежать получения раздражающего

respond_to do |format|
  format.html # index.html.erb
  format.json { render json: @things }
end

в вашем контроллере?

Я пытаюсь научить класс Rails, и я хотел бы начать с создания ими эшафота, но со всем форматированием json это намного сложнее, чем нужно. Я был бы намного счастливее, если бы они могли создать эшафот, создавший такой контроллер:

class ThingsController < ApplicationController

  def index
    @things = Thing.all
  end

  def show
    @thing = Thing.find(params[:id])
  end

  def new
    @thing = Thing.new
  end

  def edit
    @thing = Thing.find(params[:id])
  end

  def create
    @thing = Thing.new(params[:thing])
      if @thing.save
        redirect_to @thing, notice: 'Thing was successfully created.'
      else
        render: "new" 
      end
    end
  end

  def update
    @thing = Thing.find(params[:id])
      if @thing.update_attributes(params[:thing])
        redirect_to @thing, notice: 'Thing was successfully updated.'
      else
        render: "edit" 
      end
    end
  end

  def destroy
    @thing = Thing.find(params[:id])
    @thing.destroy
    redirect_to things_url
  end
end
4b9b3361

Ответ 1

Просто клонируйте файл

https://github.com/rails/rails/blob/master/railties/lib/rails/generators/rails/scaffold_controller/templates/controller.rb

к

lib/rails/generators/rails/scaffold_controller/templates/controller.rb

в вашем приложении и настроить то, что вы хотите. Кроме того, вы можете написать свои собственные генераторы для строительных лесов (http://guides.rubyonrails.org/generators.html).

Ответ 2

Замечание gem jbuilder в ваших блоках Gemfile и respond_to не будет сгенерировано.

Ответ 3

Вы заметите, что ответ JSON закодирован непосредственно в шаблоне для генератора рельсов здесь:

https://github.com/rails/rails/blob/master/railties/lib/rails/generators/rails/scaffold_controller/templates/controller.rb

Я думаю, что нужно отметить, что генератор эшафотов действительно предназначен для иллюстрации и, кроме того, для того, чтобы рассказать о том, как работает Rails-стек, он показывает, как вы можете редактировать контроллер, чтобы предоставить множество различных форматов в соответствии с вашими потребностями.

Ответ 4

Думаю, у вас не будет возможности. Во-первых, вы будете преподавать нестандартные Rails, поэтому ваши ученики могут быть смущены, когда они видят обычную версию в своих собственных установках.

Что еще более важно, контроллеры отформатированы таким образом по какой-то причине. Rails делает упор на REST, который поощряет доступ к ресурсам через несколько форматов данных. Многие современные приложения де-подчеркивают более медленные серверные рендеринговые ответы html/erb в пользу json API. Я понимаю, что это чуть больше года после вашего OP, и у вас есть ограниченное время в классе, просто добавив некоторые мысли для всех, кто может произойти. Я думаю, вы могли бы махать рукой над response_to и рассказывать им, что это настраивает вас на некоторые будущие возможности.