我有一个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
在包含进行上述“渲染”调用的方法的模块中。
有谁知道如何解决这个问题?
由于
答案 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
中有效,也许它会引导您找到正确的解决方案。