2017-04-09 70 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

對不起,我想說我需要它呈現與佈局:( –