Как добавить объект шаблона пуаро в DOM с помощью методов класса представления - Mustache & Rails 3 - PullRequest
0 голосов
/ 04 марта 2012

У меня есть приложение rails 3, которое захватывает 'post' через ajax и вставляет возвращенный json в шаблон усов. Я использую Poirot для шаблонов как на стороне клиента, так и на стороне сервера, но у меня проблема отрисовка шаблона после вызова ajax с моими определенными методами класса представления.

Методы отлично работают при рендеринге шаблона усов с сервера в рельсах, но методы не работают в шаблоне javascript, и я не уверен, как потом отрисовать данные, вставленные в шаблон 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' %>

... все определения включены, и он выводит, как я ожидаю.

Но когда я рендерим этот шаблон из JavaScript:

poirot.post(data)

... все методы класса представления недоступны.

Так как мне извлечь данные из шаблона js и вставить их как обычный html / mustaches ???

Я думал, что-то вроде этого будет работать:

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

Но я все еще получаю шаблон без методов класса представления. Я совершенно новичок в JS, поэтому любая помощь будет высоко ценится.

Спасибо

1 Ответ

1 голос
/ 08 марта 2012

Класс представления poirot может интерпретироваться только с помощью ruby, поэтому при рендеринге шаблона усов с сервера у вас есть доступ к методам класса представления, но при рендеринге шаблона на клиенте через javascript у вас больше нет доступа к этим методам.

Handlebars.js является расширением языка шаблонов усов. Handlebars.js позволяет писать вспомогательные методы javascript для использования в шаблонах.

...