在 Rails 控制器操作中渲染 html 时模板丢失错误

Ove*_*d D 5 ruby-on-rails ruby-on-rails-4

我正在尝试使用 render html: 从控制器操作中渲染原始 html:

class SomeController < ApplicationController
  def raw_html
    render html: '<html><body>Some body text</body></html>'
  end
end
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此控制器操作时,出现“模板丢失”错误

我不想使用模板,只想渲染原始 html。

我得到的错误是:

由 SomeController#raw_html 作为 HTML 参数进行处理:{} ActionView::MissingTemplate (缺少模板 some_controller/raw_html,带有 {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, : builder, :raw, :ruby]}。搜索位置: * "/Users/doved/source/sample_app/app/views" * "/Users/doved/.rvm/gems/ruby-2.0.0-p353@syp/ gems/chameleon-0.2.4/app/views" * "/Users/doved/.rvm/gems/ruby-2.0.0-p353@syp/gems/kaminari-0.15.1/app/views"): app/控制器/some_controller.rb:14:通话中'raw_html'
lib/middleware/cors_middleware.rb:8:in

我正在使用 Rails 4.0.2

我究竟做错了什么?

Kir*_*rat 5

html选项已添加到版本render中的方法中Rails 4.1

查看Github 上关于此主题的讨论

如果你将 Rails 版本升级到那么Rails 4.1你将能够将 html 渲染为

def raw_html
  render html: '<html><body>Some body text</body></html>'.html_safe ## Add html_safe
end
Run Code Online (Sandbox Code Playgroud)

对于当前版本的Rails 4.0.2,您需要使用

def raw_html
  render text: '<html><body>Some body text</body></html>' 
end
Run Code Online (Sandbox Code Playgroud)

您收到的错误如下:ActionView::MissingTemplate

由于当前html不支持选项,render因此选项传递的值html将被忽略,Rails 开始在视图目录中查找模板some_controller/raw_html