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)”的对象不是零。我也试过包括:

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

在包含进行上述“渲染”调用的方法的模块中。

有谁知道如何解决这个问题?

谢谢

4

2 回答 2

7

我们使用render_anywhere gem 并且对它很满意。

从自述文件:

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

包括这两个模块应该就够了。也许你忘了设置default_url_options[:host]?没有它,您可以使用_path助手,但不能使用助手_url

包括这些模块并检查它是否适用irb,也许它会引导您找到正确的解决方案。

于 2010-06-11T19:00:54.043 回答