我正在尝试在Rails 4中编写一个Ember应用程序,并决定使用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?
包含哪个会导致以下错误:
对于#&lt;未定义方法'flash' ActionDispatch :: Request:0x007f99f41d8720&gt;
根据讨论on this thread,罪魁祸首似乎可能是rails-api
,但鉴于我已经建立的继承,我并不完全相信。有什么建议吗?
答案 0 :(得分:33)
请参阅:https://github.com/plataformatec/devise/issues/2775
内部devise.rb更改
config.navigational_formats = ['*/*', :html]
为:
config.navigational_formats = [:json]
或只是[]
答案 1 :(得分:28)
不确定但是您可能需要包含ActionDispatch::Flash
中间件来支持Flash。使用:
config.middleware.use ActionDispatch::Flash
docs说:
ActionDispatch :: Flash:支持闪存机制 ActionController的。
我希望它有所帮助
答案 2 :(得分:28)
如果您喜欢我并在现有应用程序之上创建API,可以将其添加到config / application.rb文件中:
config.api_only = false