我开始使用rails 5,我是rails中的noob。我想创建一个简单的API,但我希望有视图(例如活动管理员)。我发现自动生成的API使用了代码' rails new backend'命令。
有没有办法自动生成视图而不仅仅是使用此命令的Json响应?
答案 0 :(得分:0)
使用标准的ActiveAdmin界面不适用于API应用程序,因为这些(根据定义)会切断表示层,即。即所有观点/ js /等的宝石。
但它会以相反的方式工作: - api几乎是完整rails应用程序的一个子集,并且默认情况下带有json渲染。我说“差不多”因为需要调整一些细节,例如(可能)cors和csrf设置。
你可以在大约一分钟内找到一个正常运行的rails 5 app .json:
rails new foo
rails db:setup
rails generate scaffold Post title:string body:text
rails db:migrate
rails server
-> http://localhost:3000/posts/index.json
除了阅读文档和一些教程之外,你应该生成两个应用程序,一个用--api,一个没有,添加模型/视图/控制器脚手架,然后只需要浏览差异。然后,您可以将api-mode的自定义设置混合并匹配到您的应用中。
答案 1 :(得分:0)
我可能没有答案,但是I found this which may be a better answer to the question.
方法:
来自APIController
的{{1}}子类,而不是ActionController::API
,使ApplicationController
继承自ApplicationController
。
您可以添加ActionController::Base
中间件。
我会在接下来的一周内尝试构建与此类似的内容,主要是为了了解Rack::MethodOverride
以及一些较新的Rails方法。
答案 2 :(得分:0)
ApplicationController
继承ActionController::Base
。ActionController::API
使用以下
class ApplicationController < ActionController::Base
class APIController < ActionController::API
任何特定于API的控制器都从APIController
继承。
flash
中间件内部config/application.rb
module MyApp
class Application < Rails::Application
# ...
# add this =>
config.middleware.use ActionDispatch::Flash
end
end
内部config/application.rb
module MyApp
class Application < Rails::Application
# ...
# add these =>
config.middleware.use ActionDispatch::Cookies
config.middleware.use ActionDispatch::Session::CookieStore
end
end
以下是full guide