使用 Rails 处理视图 新的后端 Rails 5



我从rails 5开始,我是rails的菜鸟。我想创建一个简单的 API,但我想有视图(例如活动管理员)。我使用代码"rails new backend"命令找到了自动生成的 API。

有没有办法使用此命令自动生成视图而不仅仅是 Json 响应?

我可能没有答案,但我发现这可能是这个问题的更好答案。

方法:

子类APIController来自ActionController::API,而不是ApplicationController,使ApplicationController继承自ActionController::Base

您可以包含Rack::MethodOverride中间件。

在接下来的一周里,我会尝试构建类似的东西,主要是为了了解ActiveAdmin和一些更新的 Rails 方法。

使用标准的ActiveAdmin界面不适用于API应用程序,因为这些(根据定义)会切断表示层,即视图/js/等的所有宝石。

但它会反过来工作:--api 几乎是一个完整的 Rails 应用程序的子集,并且默认带有 json 渲染。我说"几乎"是因为一些细节需要调整,例如(可能)cors和csrf设置。

您可以在大约一分钟内获得一个正常运行的 rails 5 应用程序,为 .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 模式的自定义项混合搭配到应用中。

为 Rails 5 API 应用程序启用 Active Admin

1. 将视图渲染控制器与 API 控制器分开

  • 活动管理员要求ApplicationControllerActionController::Base继承。
  • API 控制器仍应继承自ActionController::API

使用以下方法

class ApplicationController < ActionController::Base
class APIController < ActionController::API

其中任何特定于 API 的控制器都继承自 APIController .

2. 启用flash中间件

内部config/application.rb

module MyApp
  class Application < Rails::Application
    # ...
    # add this =>
    config.middleware.use ActionDispatch::Flash
  end
end

3. (用于设计身份验证)启用会话管理

内部config/application.rb

module MyApp
  class Application < Rails::Application
    # ...
    # add these =>
    config.middleware.use ActionDispatch::Cookies
    config.middleware.use ActionDispatch::Session::CookieStore
  end
end

这是完整指南

最新更新