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

时间:2014-04-09 21:32:43

标签: 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

但是,当我运行此控制器操作时,我得到一个&#34;模板丢失&#34;错误

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

我得到的错误是:

由SomeController#raw_html处理为HTML 参数:{} ActionView :: MissingTemplate(缺少模板some_controller / raw_html with {:locale =&gt; [:en],:formats =&gt; [:html],:handlers =&gt; [:erb,:builder, :raw,:ruby]}。搜索范围:* &#34; /使用者/ doved /源极/ sample_app /应用/视图&#34; * &#34; /Users/doved/.rvm/gems/ruby-2.0.0-p353@syp/gems/chameleon-0.2.4/app/views" *&#34; /Users/doved/.rvm/gems/ruby-2.0.0-p353@syp/gems/kaminari-0.15.1/app/views"): app / controllers / some_controller.rb:14:raw_html'
lib/middleware/cors_middleware.rb:8:in
来电&#39;

我使用的是Rails 4.0.2

我做错了什么?

2 个答案:

答案 0 :(得分:4)

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

查看有关此主题 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

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

答案 1 :(得分:1)

可能重复

这应该适合你:

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