これが「容認できる」プラクティスではないことはわかっていますが、バックグラウンド プロセスとして、レンダリングされた Rails パーシャルをデータベースにキャッシュして、JSONP 経由で高速に出力できるようにしています。このトピックに関する多くのリソースを見つけ、ActiveRecord モデル内で Rails 2.3.x パーシャルを正常に出力しましたが、Rails パーシャル内で動的 URL を使用すると失敗します。
これで成功した出力(動的URLを除く)が得られます...
def self.compile_html
viewer = Class.new(ApplicationController)
path = ActionController::Base.view_paths rescue ActionController::Base.view_root
Question.all.each do |q|
q.html = ActionView::Base.new(path, {}, viewer).render(:partial => "questions/cached_output", :locals => { :question => q })
sleep 1 # hold for complete output and debugging only
q.save( false ) # bypass validations
end
return "Caching complete"
end
ActionController::UrlWriter
モジュールを含めようとActionView::Helpers::UrlHelper
しましたが、うまくいきませんでした。ActionController::Base.new.url_for()
パーシャルがパーシャルに動的ルートを書き込むためにアクセスできるようにするためのインスタンス化/包含順序を見つけることができないようです。
RoR: undefined method `url_for' for nil:NilClassと同様のプロセスを試みましたが、うまくいきませんでした
render_anywhere が Rails 3.x アプリのソリューションであることは知っていますが、Rails 2.3.11 で作業しています。
考え?