2014-10-03 136 views
0

我試圖呈現形式中的骨幹模板形成,渲染軌在模板

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

但它讓我在Chrome的控制檯下面的錯誤。

Uncaught SyntaxError: Unexpected token : 

這可能是因爲我在這方面使用ERB代碼,沒有人知道一個解決方案嗎?

+0

你使用哪個版本的ruby? – AmShaegar 2014-10-03 11:26:33

+0

我使用的是ruby 2.1.2p95,我正在使用Backbone /下劃線模板系統。 – 2014-10-03 11:29:44

回答

1

我有種感覺這事做與具有代碼「或」造成的問題,我建議使用Firebug(Firefox插件)來調試代碼,因爲它是國際海事組織更適合用於調試HTML和JS比Chrome的控制檯

一般來說是不是好有ERB代碼模板JS裏面,我建議解決,通過做下列方式:

不要使用默認的下劃線插值,因爲它是容易將其與僱員再培訓局的代碼,你還需要不同的,但我用混合起來:

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> 

注意:不要混淆了Ruby代碼< %=%>和骨幹JS代碼%{{}}

渲染該部分使用JavaScript,我建議在骨架視圖類的呈現方法

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

希望這篇技巧能幫助你解決你的問題。我只能說它適用於我的項目。