如何在Rails 2.3.5中从模型中呈现部分

时间:2010-06-09 05:34:45

标签: ruby-on-rails ruby models partials

我有一个Rails 2.3.5应用程序,我试图从一个模型中渲染几个Partials(我知道,我知道 - 我不应该)。我这样做的原因是我将Comet服务器(APE)集成到我的Rails应用程序中,需要根据Model的事件(例如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

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

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

由于

2 个答案:

答案 0 :(得分:7)

我们使用render_anywhere宝石并对它感到满意。

来自自述文件:

require 'render_anywhere'

class AnyClass
  include RenderAnwhere

  def build_html
    html = render :template => 'normal/template/reference',
                  :layout => 'application'
    html
  end
end

答案 1 :(得分:0)

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

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