Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更改EJS模板目录_Javascript_Ruby On Rails_Ruby_Templates_Ejs - Fatal编程技术网

Javascript 更改EJS模板目录

Javascript 更改EJS模板目录,javascript,ruby-on-rails,ruby,templates,ejs,Javascript,Ruby On Rails,Ruby,Templates,Ejs,我将EJS与Rails4一起使用。现在,我的代码如下所示: // in javascripts/helpers.js function render(template_path, data) { return JST['templates/' + template_path](data); } 这允许我将我的ejs模板放入javascripts/模板中,然后使用以下内容呈现它们: //This will render javascripts/templates/about/photos

我将EJS与Rails4一起使用。现在,我的代码如下所示:

// in javascripts/helpers.js
function render(template_path, data) {
   return JST['templates/' + template_path](data);
}
这允许我将我的ejs模板放入javascripts/模板中,然后使用以下内容呈现它们:

//This will render javascripts/templates/about/photos
render("about/photos",{ iLength: iLength })
但是现在我需要将目录更改为在视图目录中。My.ejs文件现在位于视图/stores/

这可能吗?谢谢你的帮助

是的,这是可能的

从中,您可以通过将路径附加到
config.assets.paths
,将文件夹添加到资产管道中。因此,如果要添加的路径是
app/views/stores
,则应修改
config/application.rb
,如下所示:

config.assets.paths << Rails.root.join("app", "views", "stores")
i、 e.新目录的路径

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

.
└── views
    └── stores
        ├── foo
        │   ├── bar.jst.ejs
        │   └── baz.jst.ejs
        └── javascript-templates.js
并在
javascript templates.js
中添加以下行:

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

//= require javascript-templates
其中javascript模板是您决定命名上述文件的名称

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

JST['foo/bar']()
不过,我可能会坚持使用app/assets文件夹

JST['foo/bar']()