2012-03-04 3 views
0

ajax를 통해 'post'를 가져 와서 반환 된 json을 콧수염 템플릿에 삽입하는 레일 3 앱이 있습니다. 두 가지 모두에 Poirot을 사용하고 있습니다. 클라이언트 및 서버 측 templating하지만 Ajax 호출 후에 템플릿을 렌더링하는 데 문제가 있습니다. 정의 된 뷰 클래스 메서드가 있습니다.poirot 템플릿 객체를 뷰 클래스 메소드 -Mustache & Rails 3와 함께 DOM에 추가하는 방법

레일에서 서버의 콧수염 템플릿을 렌더링 할 때 메서드가 제대로 작동하지만 자바 스크립트 템플릿에서 메서드가 작동하지 않고 js 템플릿 외부의 js 템플릿에 데이터를 삽입하는 방법을 잘 모르겠습니다. 나중에.

내보기 클래스처럼 보이는 경우

module Posts 

    class PostView < Poirot::View 

    def user_url 
     user_path(post.user_id) 
    end 

    def user_name 
     post.user.name 
    end 

    end 

end 

내 템플릿은 다음과 같습니다

<h1>{{ title }}</h1> //posts title 

<p>Author: <a href="{{ user_url }}"/>{{ user_name }}</a> 

이 잘 작동 할 때 나는 단지 :

<%= render 'post' %> 

... 모든 정의가 포함되어 있으며 예상대로 출력됩니다.

하지만 자바 스크립트에서이 템플릿을 렌더링 할 때 :

poirot.post(data) 

이 ... 모든 뷰 클래스의 방법을 사용할 수 없습니다입니다.

그래서 js 템플릿에서 데이터를 추출하고 일반 html/콧수염처럼 삽입합니까 ???

var html = poirot.post(data) 
$('#showPost').append(html); 

을하지만 여전히 뷰 클래스의 방법과 템플릿을 얻을 :

는이 같은 일이 일 거라 생각 했어요. 나는 js에 대해 아주 익숙해서 어떤 도움이라도 대단히 감사 할 것입니다.

감사

답변

1

클라이언트에서 템플릿을 렌더링 할 때 뷰 클래스 메서드에 액세스 할 수있는 서버에서 콧수염 템플릿을 렌더링하지만, 그렇게 할 때 poirot보기 클래스는 단지 루비에 의해 해석 될 수있는 자바 스크립트를 통해 당신이 더 이상 이 방법들에 접근 할 수 있어야한다.

Handlebars.js는 Mustache 템플릿 언어의 확장 프로그램입니다. Handlebars.js을 사용하면 템플릿에서 사용할 자바 스크립트 도우미 메서드를 작성할 수 있습니다.