2012-02-17 19 views
2

我正在通過gem backbone-on-rails使用Backbone.js將Rails 3.2中的應用程序遷移到單頁應用程序體系結構。在Rails資產中編譯erb塊以創建JavaScript模板時出錯

我的應用程序視圖具有實際使用的form_for,像這樣簡單的例子一些形式:

<%= form_for :filter do |f| %> 
    <div> 
     <%= f.label :document, t('tags.label.entity_document') %> 
     <%= f.text_field :document %> 
    </div> 
    <div> 
     <%= f.label :name, t('tags.label.name') %> 
     <%= f.text_field :name %> 
    </div> 
    ... and so on 
<% end %> 

我見過的Rails 3.1資產管道具有編譯JST文件的功能,它可以級聯多個編譯在一起編譯模板,在我的情況下,我想在資產中編譯這個ERB表單文件。

所以我感動的形式ERB文件名爲應用程序/資產/模板/ index.jst.ejs.erb資產文件夾,我收到以下編譯錯誤消息:

compile error 
/Users/rmi/Workspace/cbs-backbone/app/assets/templates/entities/index.jst.ejs.erb:2: syntax error, unexpected ')' 
...h', :method => 'get'} do |f|).to_s) 
          ^
/Users/rmi/Workspace/cbs-backbone/app/assets/templates/entities/index.jst.ejs.erb:52: syntax error, unexpected kENSURE, expecting ')' 
/Users/rmi/Workspace/cbs-backbone/app/assets/templates/entities/index.jst.ejs.erb:54: syntax error, unexpected kEND, expecting ')' 
    (in /Users/rmi/Workspace/cbs-backbone/app/assets/templates/entities/index.jst.ejs.erb) 

同樣的錯誤也正好有這個簡單的下面的代碼:

<%= [1,2].each do |element| %> 
    aaa 
<% end %> 

確實

compile error 
/Users/rmi/Workspace/cbs-backbone/app/assets/templates/entities/sbrabous.jst.ejs.erb:1: syntax error, unexpected ')' 
_erbout = ''; _erbout.concat(( [1,2].each do |element|).to_s) 
                 ^

所以它似乎正在與每個紅寶石塊發生。

我已經配置我的Rails應用程序使用{{}}作爲EJS打開/關閉標記,如在此之前的問題https://stackoverflow.com/a/9282744/1216027,所以<%應該是ERB處理,它是真正的工作對不紅寶石命令需要一個塊。

是否有可能在資產中編譯這些ERB代碼?怎麼樣?

回答

0

在js.erb資產文件中使用<%= ... -%>語法時,我遇到了同樣的問題。使用<%= ... %>修復它。

也可以嘗試跳過=爲循環調用

<% [1,2].each do |element| %> 
    aaa 
<% end %>