Rails在'public'之外呈现HTML文件

时间:2015-11-16 02:09:50

标签: ruby-on-rails

我试图在Rails 5.0.0.alpha中做一些非常简单的事情:渲染一个不在public目录中的HTML文件。

我的路线是:

get '/api/docs' => 'static#documentation'

我的StaticController看起来像这样:

class StaticController < ApplicationController
    def documentation
        render 'api/documentation/index.html'
    end
end

我想呈现的index.html文件位于app/views/api/documentation/index.html

每当我在浏览器中加载/api/docs时,我得到的是200 OK响应,其中包含空白页,这意味着什么都没有呈现。

我已经尝试了render的每个变体:

  • render 'app/views/api/documentation/index.html'
  • render 'views/api/documentation/index.html'
  • render 'api/documentation/index.html'
  • render '/documentation/index.html'
  • render 'app/views/api/documentation/index'
  • render 'views/api/documentation/index'
  • render 'api/documentation/index'
  • render '/documentation/index'
  • render file: 'app/views/api/documentation/index'
  • render file: 'views/api/documentation/index'
  • render file: 'api/documentation/index'
  • render file: '/documentation/index'

等。我错过了什么?

编辑:服务器输出:

Started GET "/api/docs" for 198.167.XXX.XX at 2015-11-16 02:07:48 +0000
Processing by StaticController#documentation as HTML
Completed 200 OK in 1ms (Views: 0.2ms | ActiveRecord: 0.0ms)

2 个答案:

答案 0 :(得分:0)

我认为这是因为主要的应用程序模板。你可以用2种方式修复, 1.检查<%= yield %>标记是否在application.html.erb

或者,使用

禁用它
layout false

中的

答案 1 :(得分:0)

对于任何其他与OP有类似问题的人。如果您使用的是api_only rails应用程序,请确保您的控制器继承自nan nan 而不是ActionController::Base