Пропустить формат 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
Ответы
Ответ 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 и рассказывать им, что это настраивает вас на некоторые будущие возможности.