2017-04-09 10 views
0

私はhome_controllerを持っており、[:index, :process_img]のアクションがあります。 :process_imgのアクションから、:indexアクションのHTMLソース全体を取得する必要があります。コントローラ内のそのコードにアクセスする必要があります。コントローラーで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いいえ、私はテンプレートの不足のエラーが発生している原因には役立ちませんが、私は自分のアプリケーションでそのテンプレートを持っています。 –

+0

@AjinkyaPisalが問題を修正しました。ありがとう! –

答えて

2

あなたは(レンダリングと同じルールに従ってレンダリングしますが、ブラウザにレスポンスボディとして送信するのではなく、文字列で結果を返します)render_to_stringを使用することができます。私はrender_to_stringがあると思いますが

render_to_string :index 
+0

テンプレートが見つかりません {:locale => [:en]、:formats => [:jpeg]、:variants => []、 :ハンドラー=> [:erb、:ビルダー、:未加工、:ルビー、:コーヒー、: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'に置かなければなりません。別のパスがある場合は、 'render_to_string 'landing/index''などのアクションだけでなく、パスを指定することもできます。 –

+0

エラーを修正しました!ありがとう@Vasily、あなたのソリューションは動作します! –

0

慣用的なオプションはここでは普通のルビーでも動作する方法です:

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

レイアウトファイルなしでファイルをレンダリングするにはどうすればよいですか? –

+0

これはまさにこれが行うことです –

+0

申し訳ありませんが、私はそれがレイアウトでレンダリングする必要があると言いたいと思います。 –

関連する問題