2017-04-09 68 views
0

我有home_controller并且里面有[:index, :process_img]动作。 我需要从行动:process_img获得整个html源:index行动。需要访问控制器中的代码。在控制器中获取erb模板的html代码

class HomeController < ActionController::Base 
    def index 
    end 

    def process_img 
    index_html_code = "the html source of index action should be here" 
    end 
end 

我该如何做到这一点?提前致谢!

+1

你可以尝试'render_to_string'? https://apidock.com/rails/ActionController/Base/render_to_string –

+0

@AjinkyaPisal没有帮助不会导致我得到Missing模板错误,但我有我的应用程序中的模板。 –

+0

@AjinkyaPisal修复了现在的问题!谢谢! –

回答

2

您可以(根据相同的规则渲染渲染,但在一个字符串返回结果,而不是将其发送的响应体到浏览器)使用render_to_string

render_to_string :index 
+0

我得到这个错误'模板不见了 与{:locale => [:en],:formats => [:jpeg],:variants => [],缺少模板主页/ :handlers => [:erb,:builder,:raw,:ruby,:coffee,:jbuilder]}。搜索:*“/ Users/kmanuk/projects/ruby​​_on_rails/ponies/app/views”*“/Users/kmanuk/.rvm/gems/ruby-2.3.1/gems/kaminari-0.16.3/app/views” '但我有那个模板。 –

+0

@ arm2pro'home'控制器的'index'行为的布局应放置在'views/home/index'中。如果你有另一条路径,你也可以指定一个路径,而不仅仅是action,例如'render_to_string'landing/index''。 –

+0

修复了错误!感谢@Vasily,您的解决方案可行! –

0

虽然我觉得render_to_string是一个惯用的选择这里是一种方法来做到这一点,它将工作在普通的红宝石,以及:

ERB.new(File.read "app/views/home/index.html.erb").result binding 
+0

如何在没有布局文件的情况下渲染该文件? –

+0

这就是这样做 –

+0

对不起,我想说我需要它呈现与布局:( –