2010-06-09 6 views
5

레일 2.3.5 응용 프로그램이 있고 모델 내에서 여러 개의 파트를 렌더링하려하고 있습니다 (알고 있습니다 - 알고 싶지 않습니다). 이를 수행하는 이유는 Comet 서버 (APE)를 Rails 앱에 통합하고 모델의 이벤트 (예 : after_create)를 기반으로 업데이트를 푸시해야하기 때문입니다.레일에서 모델의 일부를 렌더링하는 방법 2.3.5

나는이 일을 시도 :

나는 사용자에게 내 부분에 LINK_TO을 시도하지만 경우, 사용자가 아닌 헬퍼 할 간단한 파셜을 렌더링 할 날 수 있습니다
ActionView::Base.new(Rails::Configuration.new.view_path).render(:partial => "pages/show", :locals => {:page => self}) 

, 난라는 오류가 나타납니다

undefined method `url_for' for nil:NilClass 

"project_path (프로젝트)"에 전달되는 개체가 nil이 아니 었는지 확인했습니다. 또한 위의 "렌더링"호출을 수행하는 메소드가 포함 된 모듈에

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

을 포함하여 시도했습니다.

누구든지이 문제를 해결하는 방법을 알고 있습니까?

감사합니다.

+0

Rails.configuration.view_path – tribalvibes

답변

7

우리는 render_anywhere 보석을 사용하여 만족합니다.

의 README에서

:

require 'render_anywhere' 

class AnyClass 
    include RenderAnwhere 

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

문제는 레일 인 2.3.x에 대해했지만, 보석 "> = 3.0.7은"나는 보석을 추측하고있어 –

+2

타겟 된입니다 2.X에서이 질문을 받았다. 여전히 2.3.x에있는 경우 이전 태그 버전을 사용해보세요. – klochner

0

이 두 모듈을 포함하면 충분합니다. 아마도 default_url_options[:host]을 잊어 버린 것일까 요? 그것 없이는 _path 도우미를 사용할 수 있지만 _url 것은 사용할 수 없습니다.

이 모듈을 포함하고 irb에서 작동하는지 확인하십시오. 올바른 해결책을 제시 할 수도 있습니다.

관련 문제