我已經工作了一段時間,現在與Backbone.js,我現在遇到的一件事是;有時候,你需要有服務器端邏輯到.eco.jst模板混合clientside JavaScript模板與rails邏輯骨幹.js
例如
- 一個國際化的翻譯(目前看i18n.js寶石本)
- 路徑的路線沒有硬編碼(somemodel_path(somemodel))
- 授權(例如,如果用戶可以銷燬此模型,則顯示一個刪除按鈕)。 ATM我解決這個問題通過傳遞某些權利對象在被填充在JSON。
- 渲染HTML幫助像simple_form或S3_file_uploader(ATM我解決這個問題有使其服務器端,裝上無顯示)
如您所知,.eco被node.js解析,所以我無法在生態文件中調用ruby。我通過在頭部基本創建一個「數據」對象來解決大多數這些問題。與此相似:
window.data = {
some_translation = "<%= t('cool') %>",
<%= "can_destoy_model = true," if can?('destroy', Model) %>
post_edit_link = "<%= post_path(@post) %>
}
除了這種笨重(這只是一個例子,通常這會比較ordened或者我添加了一個HTML5數據屬性一些DOM元素),這是費時,有時你必須重新創建完整的業務邏輯,否則將在軌道上的一個oneliner(例如S3_file_uploader,它需要編碼的亞馬遜策略文件和令牌)
你對此有什麼想法?我可能不應該使用.eco(儘管我喜歡獨立文件中的模板而不是污染視圖)。我能否使用服務器端邏輯,例如,如果我使用了鬍鬚或車把,並且您會推薦使用哪種gem?
如果你把它放在視圖中,你會如何定義canDelete?如果將它放入處理程序模板中(如果可能的話,可能使用偏分量),這樣會更好嗎?)。否則我仍然需要轉儲dom中的隨機json對象來處理權限。 – Jareish 2013-03-07 10:02:07
這只是您可以做的事情的一個例子,您可以爲任何您想要的模型創建模型,即Session模型,它將Permission模型與所有與權限相關的數據一起存儲。這樣你就可以像'@ $('。delete_button_container')。append(@deleteButtonTemplate())一樣執行類似於App.Session.can_delete(「project」)的操作。 如何構造應用程序以填充權限數據(例如在頁面加載時填充)取決於您。不過,這種方法要求你在客戶端處理很多東西......否則,我很難擺脫模板中的邏輯 – sergelerator 2013-03-07 19:16:05