2014-10-03 4 views
0

Я пытаюсь сделать форму в шаблоне магистрального,Рендер рельсы образуют в шаблоне

template: _.template(
    '<li><%= form_for :movie, url: movie_path do |f| %><% end %></li>' 
), 

Но это дает мне следующую ошибку в консоли Chrome.

Uncaught SyntaxError: Unexpected token : 

Возможно, это связано с тем, что я использую код erb в этом контексте, знает ли кто-нибудь решение?

+0

Какую версию рубина вы используете? – AmShaegar

+0

Я использую ruby ​​2.1.2p95, и я использую систему шаблонов Backbone/underscore. –

ответ

1

У меня такое чувство, что это имеет какое-то отношение к коду с «или», который вызывает проблему, я предлагаю использовать Firebug (плагин Firefox) для отладки кода, поскольку IMO лучше подходит для отладки HTML и JS, чем консоли Chrome

Вообще-то это не то, что хорошо иметь ERB код внутри шаблонам JS, я предлагаю решение, что, делая это следующим образом:.

не используйте Underscore интерполяции по умолчанию, так как Легко смешивать его с кодом ERB, который вам также нужен, но по-разному. Я использую:

Backbone.$ = $; // I have no idea why backbone complains about that stuff, but this thing solves the problem. 
_.templateSettings = { 
    interpolate: /\$\{\{(.+?)\}\}/g, 
    escape: /\%\{\{(.+?)\}\}/g, 
    evaluate: /\{\{(.+?)\}\}/g 
}; // set template interpolation settings 

вы можете установить эти параметры так, как вы хотите

Сделать нормальный HTML частичным и иметь содержимое внутри него завернутым в коде шаблона, например:

<script id="something_template" type="text/template"> 
    <li><%= form_for :movie, url: movie_path do |f| %><% end %></li> 
</script> 

примечания: Не перепутать рубиновый код < % =%> и магистральная JS код% {{}}

визуализации это частичное с JavaScript, я полагаю, в методе визуализации класса магистрального вида

render: function() { 
    $("#container").empty(); 
    $(_.template($("#something_template").html(), { 
    // variables go here 
    })).appendTo("#container"); 
} 

Надеюсь, этот совет поможет вам решить вашу проблему. Я могу только сказать, что это работает для моих проектов.

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