在Rails 5 API中渲染视图

时间:2016-10-05 22:11:45

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

我通过rails new <application-name> --api使用Rails 5生成了一个仅限API的rails应用程序。我已经决定要包含一个用于测试某些内容的视图,并且在加载视图时遇到问题。

我创建了一个带有一些文本的users / index.html.erb文件,我的控制器现在只是def index; end但是当我点击/ users URL时没有出现任何内容。我也尝试在config / application.rb中注释掉# config.api_only = true,但这并没有影响任何内容。有关如何进行的任何建议?

2 个答案:

答案 0 :(得分:18)

您无需为此目的取消注释config.api_only = true,只需从ActionController::Base继承您的控制器,或在您的ApplicationController中执行此操作(默认为常规轨道生成)。

代码:

  1. 仅适用于此控制器YourController < ActionController::Base
  2. 适用于所有应用ApplicationController < ActionController::Base

答案 1 :(得分:0)

这来自ActionController :: Metal文档https://apidock.com/rails/ActionController/Metal

它说:

ActionController :: Metal默认不提供用于呈现>视图,部分或其他响应的实用程序,除了显式调用> response_body =,content_type =和status =之外。要添加您习惯于使用普通控制器的渲染助手,可以执行以下操作:

class HelloController < ActionController::Metal
 include AbstractController::Rendering
 include ActionView::Layouts
 append_view_path "#{Rails.root}/app/views"

  def index
   render "hello/index"
  end
end

因此,我自己进行了尝试,并且仅通过添加两个模块进行添加即可,实际上在将其用于ActionController :: API时效果很好