2012-04-10 3 views
1

У меня есть проект Backbone.js с Rails 3.2.3, и он работает, но я хочу его очистить и поместить шаблон в отдельный JST-файл.Файлы шаблонов Backbone.js в Rails 3.2

я первый создал каталог для хранения моих шаблонов

<project>/app/assets/templates/appointments 

Затем я создал файл там называется 'show.jst.

Из того, что я прочитал мне не нужно устанавливать Jammit под Rails 3.2.x, поэтому я пошел вперед и попытался преобразовать следующий код, чтобы использовать внешний файл шаблона:

window.AppointmentView = Backbone.View.extend({ 
    template: _.template('<h3><%= topic %></h3>'), 

    render: function(){ 
     var attributes = this.model.toJSON(); 
     this.$el.html(this.template(attributes)); 
     return this; 
    } 
}); 

Вот моя попытка до сих пор:

window.AppointmentView = Backbone.View.extend({ 
    render: function(){ 
     var attributes = this.model.toJSON(); 
     var html = JST['appointments/show'](attributes); 
     this.$el.html(html); 
     return this; 
    } 
}); 

Внутри моего файла show.jst я получил следующее:

<h3><%= topic %></h3> 

(тема - поле в моей модели «Назначение»)

Это не показывает никаких ошибок на экране и не печатает ничего на экране.

Как исправить это, чтобы использовать внешние файлы шаблонов?

Update

Я уверен, что я есть required_tree ./templates или ../templates (в зависимости от расположения я тестируя) прежде, чем все остальные требуют утверждения типа так:

#= require jquery 
#= require jquery_ujs 
#= require backbone-rails 
#= require_tree ../templates 
#= require_tree ./models 
#= require_tree ./collections 
#= require_tree ./views 
#= require_tree ./routers 

Я пытался поставить свой файл шаблона show.jst в следующих

приложение/активы/JavaScripts/шаблоны/назначения/show.jst

приложение/активы/шаблоны/встречи/show.jst

Я пробовал называть файл show.jst.ejs и включать в себя gem 'ejs' в моем Gemfile.

Ни один из них не загрузил шаблон. При хранении моих шаблонов под приложением/активы Я сделал, что он был на моем пути со следующим:

config.assets.paths << "#{ Rails.root }/app/assets/templates" 

Это не помогло, но она избавиться от ошибки звездочек.

Я все еще не смог загрузить шаблон jst-файла, и все, что я прочитал, предлагает другой способ. Я пробовал многие из них, возможно, их не совместим с Rails 3.2.3.

ответ

3

Я нашел, что это работает хорошо. В моем appointment_show.js я называю мой шаблон следующим образом:

window.AppointmentView = Backbone.View.extend({ 
    template: JST["appointments/show"], 

    render: function(){ 
     this.$el.html(this.template(this.model.toJSON())); 
     return this; 
    } 
}); 

Я убедиться, что я включать каталог шаблонов в моем приложении.ЯШ:

#= require jquery 
#= require jquery_ujs 
#= require backbone-rails 
#= require_tree ../templates 
#= require_tree ./models 
#= require_tree ./collections 
#= require_tree ./views 
#= require_tree ./routers 

Включите эти драгоценные камни в вашем Gemfile

gem 'backbone-rails' 
gem 'ejs' 

Добавить каталог приложений/активы/шаблоны для вашего пути в environment.rb:

AppointmentsBackboneJs::Application.configure do 
    config.assets.paths << "#{ Rails.root }/app/assets/templates" 
end 

Не забудьте пуск & сервер перезапуска

Смежные вопросы