0

1 つの大きな HTML 文字列を返す大きなメソッドがあります。これは非常に非効率的で、ブラウザが HTML を一度に読み込むのに長い時間がかかります。私の質問は、Ruby on Rails には HTML の一部をバッファに出力する方法があるので、一度にすべてを実行しないのでしょうか?

これが私が意味することです:

module TestHelper
    def my_method
        output = ""
        output += "<div>"
        output += "<span>Test</span>"
        output += "</div>"
        return output
    end
end

しかし、私はこのようにすることができるかどうか疑問に思っています:

module TestHelper
    def my_method
        print_to_page "<div>"
        print_to_page "<span>Test</span>"
        print_to_page "</div>"
    end
end

私の質問は、それを別の方法や「正しい」方法で行う方法ではありません。私がこの方法で行っているのには理由があります。私はウェブを検索して読んだことwith_output_bufferがありますが、それがどのように機能するのかわかりません。助言がありますか?

4

1 に答える 1

-1

それ以降のバージョンのレールはストリーミングをサポートしています。これにより、求めているものが効果的に提供されます。

しかし!あなたが求めているものがあなたが必要としているものであることに注意してください。firebugの net タブを使用して、ページの読み込みにかかる時間と、時間が費やされている場所を確認します。ブラウザがページ データの取得に特に長い時間を費やしている場合は、ストリーミングが役立つ可能性があります。ただし、ストリーミングを利用するには、コードが HTML ページをチャンクで生成できる必要があることにも注意してください。これはあなたが思っているより難しいかもしれません - のようなもの

<%= table_tag { render_huge_table } %>

使用できません。

于 2012-04-05T19:46:46.623 に答える