5

Rails 2.3.5アプリケーションがあり、モデル内からいくつかのパーシャルをレンダリングしようとしています(私は知っています、私は知っています-私はそうするべきではありません)。これを行う理由は、Cometサーバー(APE)をRailsアプリに統合し、モデルのイベント(after_createなど)に基づいて更新をプッシュする必要があるためです。

私はこれをやってみました:

ActionView::Base.new(Rails::Configuration.new.view_path).render(:partial  => "pages/show", :locals => {:page => self})

これにより、ヘルパーを使用しない単純なパーシャルをレンダリングできますが、パーシャルでlink_toを使用しようとすると、次のようなエラーが発生します。

undefined method `url_for' for nil:NilClass

「project_path(project)」に渡されるオブジェクトがnilでないことを確認しました。私も含めてみました:

include ActionView::Helpers::UrlHelper
include ActionController::UrlWriter

上記の「render」呼び出しを行うメソッドを含むモジュール内。

誰かがこれを回避する方法を知っていますか?

ありがとう

4

2 に答える 2

7

私たちはrender_anywheregemを使用しており、満足しています。

READMEから:

require 'render_anywhere'

class AnyClass
  include RenderAnwhere

  def build_html
    html = render :template => 'normal/template/reference',
                  :layout => 'application'
    html
  end
end
于 2011-09-16T17:22:41.373 に答える
0

これらの2つのモジュールを含めるだけで十分です。多分あなたは設定するのを忘れましたdefault_url_options[:host]か?それがなければ、ヘルパーを使用できますが、_pathヘルパーを使用することはできません_url

これらのモジュールを含めて、それがで機能するかどうかを確認してくださいirb。おそらくそれは正しい解決策につながるでしょう。

于 2010-06-11T19:00:54.043 に答える