首页 文章

在Rails控制器操作中呈现html时,模板缺少错误

提问于
浏览
4

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

class SomeController < ApplicationController
  def raw_html
    render html: '<html><body>Some body text</body></html>'
  end
end

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

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

我得到的错误是:

由SomeController#raw_html作为HTML参数处理:{} ActionView :: MissingTemplate(缺少模板some_controller / raw_html与{:locale => [:en],:formats => [:html],:handlers => [:erb,:搜索:* "/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 / controllers / some_controller.rb:14:in raw_html' lib/middleware/cors_middleware.rb:8:in call'

我正在使用Rails 4.0.2

我究竟做错了什么?

2 回答

  • 1

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

    查看有关此主题的讨论 on Github

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

    def raw_html
      render html: '<html><body>Some body text</body></html>'.html_safe ## Add html_safe
    end
    

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

    def raw_html
      render text: '<html><body>Some body text</body></html>' 
    end
    

    您收到错误消息: ActionView::MissingTemplate

    因为 render 目前不支持 html 选项,所以忽略 html 选项传递的值,Rails开始在views目录中查找模板 some_controller/raw_html .

  • 4

    Possible duplicate

    这应该适合你:

    render text: '<html><body>Some body text</body></html>'
    

相关问题