但是当然 Assets 助手在 Ja-6ren">
gpt4 book ai didi

ruby-on-rails - 带有主干 rails 的 rails : asset helpers (image_path) in EJS files

转载 作者:行者123 更新时间:2023-12-04 00:00:04 24 4
gpt4 key购买 nike

我有一个使用 codebrew/backbone-rails 的 Rails 3.1 应用程序.在 .jst.ejs 模板中,我想包含一个图像,如下所示:

<img src="<%= image_path("foo.png") %>"/>

但是当然 Assets 助手在 JavaScript 中不可用。

链接 ERB (.jst.ejs.erb) 不起作用,因为 EJS 语法与 ERB 冲突。

这是我所知道的:
  • Assets 助手在浏览器中不可用,所以我需要在服务器端运行它们。
  • 我可以通过让服务器将各种 Assets 路径转储到 HTML(通过数据属性或 <script> 和 JSON)并在 JS 中读取它们来解决这个问题,但这似乎相当笨拙。

  • 有没有办法以某种方式使用 EJS 文件中的 Assets 助手?

    最佳答案

    实际上,有一种方法可以链接一个 .jst.ejs.erb 文件,尽管它是相当无证的,我只是通过查看 EJS 测试用例才找到它。您可以告诉 EJS 使用 {{ }}(或 [% %] 或其他任何您想要的)而不是 <% %>,然后 ERB 不会尝试评估您的 EJS 调用。

    确保在你的代码中的某处需要 EJS(我刚刚在我的 Gemfile 中包含了 gem 'ejs'),然后创建一个包含以下内容的初始化程序(我称之为 ejs.rb):

    EJS.evaluation_pattern    = /\{\{([\s\S]+?)\}\}/
    EJS.interpolation_pattern = /\{\{=([\s\S]+?)\}\}/

    然后确保将您的模板重命名为 .jst.ejs.erb,并用 {{ }} 替换现有的 <% %> EJS 解释代码。如果您想使用除 {{ }} 之外的其他内容,请更改初始化程序中的正则表达式。

    我希望 Sprockets 中有一个选项可以通过配置来处理这个问题,而不必显式包含 EJS,但就目前而言,我所知道的还没有办法做到这一点。

    关于ruby-on-rails - 带有主干 rails 的 rails : asset helpers (image_path) in EJS files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8316814/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com