我已经使用 Backbone.js 工作了一段时间,我现在遇到的一件事是;有时您需要将服务器端逻辑放入 .eco.jst 模板中
例如
- i18n 翻译(目前查看 i18n.js gem)
- 没有硬编码的路径 (somemodel_path(somemodel))
- 授权(例如,如果用户可以销毁此模型,则显示删除按钮)。Atm 我通过在填充的 json 中传入一些权限对象来解决这个问题。
- 渲染像 simple_form 或 S3_file_uploader 之类的 html 帮助程序(atm 我通过在服务器端渲染它来解决这个问题,并将显示置于无)
如您所知,.eco 由 node.js 解析,所以我不能在 eco 文件中调用 ruby。我通过在头部创建一个“数据”对象来解决大多数这些问题。与此类似:
window.data = {
some_translation = "<%= t('cool') %>",
<%= "can_destoy_model = true," if can?('destroy', Model) %>
post_edit_link = "<%= post_path(@post) %>
}
除了这很笨重(这只是一个例子,通常这会更有序,或者我向某个 dom 元素添加一个 html5 数据属性),这很耗时,有时你必须重新创建完整的业务逻辑,否则这将是 rails 中的 oneliner (以 S3_file_uploader 为例,它需要编码的亚马逊策略文件和令牌)
您对此有何看法?我是否应该不使用 .eco (尽管我喜欢单独文件中的模板而不是污染视图)。例如,如果我使用小胡子或车把,我是否能够使用服务器端逻辑?如果是,您会推荐哪种宝石?