在Rails控制器操作中呈现html时,模板缺少错误
我正在尝试使用render html:从控制器动作渲染原始html:
class SomeController < ApplicationController def raw_html render html: 'Some body text' end end
但是,当我运行此控制器操作时,我收到“模板丢失”错误
我不想使用模板,只需渲染原始html。
我得到的错误是:
由SomeController处理#raw_html作为HTML参数:{} ActionView :: MissingTemplate(缺少模板some_controller / raw_html with {:locale => [:en],:formats => [:html],:handlers => [:erb,:搜索:*“/ Users / doved / source / sample_app / app / views”*“/Users/doved/.rvm/gems/ruby-2.0.0-p353@syp/:builder,:raw,:ruby]}。 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:inraw_html'
lib/middleware/cors_middleware.rb:8:inraw_html'
call’
lib/middleware/cors_middleware.rb:8:in
我正在使用Rails 4.0.2
我究竟做错了什么?
在Rails 4.1
版本中, html
选项被添加到render
方法中。
在Github上查看关于此主题的讨论
如果您将Rails版本升级到Rails 4.1
那么您将能够将html渲染为
def raw_html render html: 'Some body text'.html_safe ## Add html_safe end
使用当前版本的Rails 4.0.2
,您需要使用
def raw_html render text: 'Some body text' end
您收到的错误为: ActionView::MissingTemplate
因为render
不支持当前的html
选项,所以忽略使用html
选项传递的值,并且Rails开始在views目录中查找模板some_controller/raw_html
。
可能重复
- 如何直接从Rails控制器返回HTML?
这应该适合你:
render text: 'Some body text'