私はEmberアプリケーションをRails 4で記述し、Rails-api
は、APIコントローラー用ですが、単一ページアプリの一部ではないいくつかのページのアプリケーションコントローラーはそのままにします。より具体的に言えば、ここに私のコントローラーがあります:
app/controllers/application_controller.rb
:
class ApplicationController < ActionController::Base
protect_from_forgery
end
app/controllers/sample_controller.rb
:
class SampleController < ApplicationController
# my methods
end
app/controllers/api/v1/api_controller.rb
:
class Api::V1::ApiController < ActionController::Api
include ActionController::MimeResponds
end
app/controllers/api/v1/sample_controller.rb
:
module Api::V1
class SampleController < ApiController
respond_to :json
# my methods
end
end
ぼくの application.html.slim
には次の行が含まれています。
== render partial: "flash_msgs" unless flash.blank?
これを含めると、次のエラーが発生します。
#<ActionDispatch :: Request:0x007f99f41d8720>の未定義のメソッド 'flash'
ディスカッションごと このスレッド上 、原因はRails-api
、しかし、私が設定した継承を考えると、私は完全には確信していません。助言がありますか?
確かではありませんが、フラッシュをサポートするためにActionDispatch::Flash
ミドルウェアを含める必要があるかもしれません。使用:
config.middleware.use ActionDispatch::Flash
docs は言う:
ActionDispatch :: Flash:ActionControllerのフラッシュメカニズムをサポートします。
それが役に立てば幸い
参照: https://github.com/plataformatec/devise/issues/2775
Devise.rbの内部変更
config.navigational_formats = ['*/*', :html]
に:
config.navigational_formats = [:json]
あるいは単に [ ]
私と同じように既存のアプリケーションの上にAPIを作成する場合は、これをconfig/application.rbファイルに追加できます。
config.api_only = false