使用rails new backend Rails 5处理视图

时间:2016-07-07 23:12:23

标签: ruby-on-rails ruby ruby-on-rails-5

我开始使用rails 5,我是rails中的noob。我想创建一个简单的API,但我希望有视图(例如活动管理员)。我发现自动生成的API使用了代码' rails new backend'命令。

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

3 个答案:

答案 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)

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

1。从API控制器单独的视图渲染控制器

  • Active Admin要求ApplicationController继承ActionController::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。 (对于Devise身份验证)启用会话管理

内部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