Undefined метод экземпляра "reply_to" в Rails 5 API Controller
В рельсах 5, созданных с помощью --api
У меня есть ошибка
NoMethodError (undefined method `respond_to' for #<Api::MyController:0x005645c81f0798>
Did you mean? respond_to?):
Однако в документации для рельсов 4.2 говорится http://edgeguides.rubyonrails.org/4_2_release_notes.html
response_with и соответствующий ответ класса class_to были перешел в драгоценный камень респондентов. Добавьте gem 'responseers', '~ > 2.0' к вашему Gemfile, чтобы использовать его:
Уровень ответа на уровне экземпляра не изменяется:
И я вызываю метод экземпляра. В чем дело?
class ApplicationController < ActionController::API
end
# ...
class Api::MyController < ApplicationController
def method1
# ...
respond_to do |format|
format.xml { render(xml: "fdsfds") }
format.json { render(json: "fdsfdsfd" ) }
end
Ответы
Ответ 1
ActionController::API
не включает модуль ActionController::MimeResponds
. Если вы хотите использовать respond_to
, вам нужно включить MimeResponds
.
class ApplicationController < ActionController::API
include ActionController::MimeResponds
end
class Api::MyController < ApplicationController
def method1
# ...
respond_to do |format|
format.xml { render(xml: "fdsfds") }
format.json { render(json: "fdsfdsfd" ) }
end
end
end
Источник: ActionController:: API docs
Ответ 2
Как и в случае с Rails 4.2, эта функциональность больше не поставляется с Rails, но может быть легко включена в драгоценный камень респондентов (например, Max, отмеченный в комментариях выше).
Добавьте gem 'responders'
в свой Gemfile, затем
$ bundle install
$ rails g responders:install
Источники:
http://edgeguides.rubyonrails.org/4_2_release_notes.html#respond-with-class-level-respond-to
https://github.com/plataformatec/responders