【问题标题】:Change EJS Template Directory更改 EJS 模板目录
【发布时间】:2014-07-14 11:48:24
【问题描述】:

我在 Rails 4 中使用 EJS。现在我的代码如下所示:

// in javascripts/helpers.js
function render(template_path, data) {
   return JST['templates/' + template_path](data);
}

这让我可以将我的 ejs 模板放入 javascripts/templates 中,然后使用:

//This will render javascripts/templates/about/photos
render("about/photos",{ iLength: iLength })

但现在我需要将目录更改为在我的视图目录中。我的 .ejs 文件现在位于 views/stores/

这可能吗?感谢您的帮助!

【问题讨论】:

    标签: javascript ruby-on-rails ruby templates ejs


    【解决方案1】:

    是的,这是可能的。

    Rails Asset Pipeline guide,您可以通过将路径附加到config.assets.paths 来将文件夹添加到资产管道。所以如果你要添加的路径是app/views/stores,你应该像这样修改config/application.rb

    config.assets.paths << Rails.root.join("app", "views", "stores")
    

    接下来,您必须让您的 application.js 文件知道加载您的 javascript 模板。假设您的 application.js 文件位于 app/assets/javascripts 文件夹中,一种方法是添加以下内容:

    //= require_tree ../../views/stores
    

    即新目录的路径。

    另一种不使用相对路径来实现此目的的方法是将名为javascript-templates.js(或其他合适的名称)的文件添加到您的商店文件夹的根目录,如下所示:

    .
    └── views
        └── stores
            ├── foo
            │   ├── bar.jst.ejs
            │   └── baz.jst.ejs
            └── javascript-templates.js
    

    并在javascript-templates.js 中添加以下行:

    //= require_tree .
    

    然后在application.js 中添加以下内容

    //= require javascript-templates
    

    其中 javascript-templates 是您决定命名上述文件的任何名称。

    重新启动您的 Rails 服务器后,JST 对象现在应该包含在您的 app/views/stores 文件夹中找到的模板。在上面的示例中,您可以通过以下方式访问views/stores/foo/bar.jst.ejs 中的模板:

    JST['foo/bar']()
    

    不过,我可能会坚持使用 app/assets 文件夹。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-21
      • 2020-10-19
      • 2020-07-01
      • 2016-02-18
      • 2015-10-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多