gpt4 book ai didi

ruby-on-rails - Rails 4 中的 Handlebars + Images - 如何获得正确的 asset_path?

转载 作者:行者123 更新时间:2023-12-03 15:02:56 24 4
gpt4 key购买 nike

我们在 Rails 4 应用程序中使用 Handlebars 。困扰我们的问题是,我们需要让我们系统中使用图像的每个 hbs 文件都使用 .erb 扩展名,这样当图像在生产中预编译时,我们将拥有正确的 Assets 路径....

因此,我需要转换这种类型的代码,而不是将客户端代码与服务器代码完全分离:

sideBarTemplate.hbs:

<img src="assets/main/logo.png" alt="image description" width="126" height="34">

进入这种类型的代码:

sideBarTemplate.hbs.erb:

<img src="<%=asset_path('main/logo.png')%>" alt="image description" width="126" height="34">

我们的目标当然是找到一种替代方法来将服务器代码渲染到我们的 hbs 模板中,因为我不希望我们的前端开发人员编写“服务器端代码”。

有什么解决办法吗?

最佳答案

您可以尝试在 Ruby ( handlebars.register_helper ) 和 JS ( Handlebars.registerHelper ) 中注入(inject)一个帮助程序,它获取一个字符串并在 Assets 根路径前添加。

类似于 <img src="{{assetPath 'main/logo.png'}}" .

在 JS 端,一次从 Ruby 获取资源路径的时间(例如使用 .js.erb)并在帮助程序中使用该变量。

更新:

关于如何使用助手的示例:

http://jaskokoyn.com/2013/08/08/custom-helpers-handlebars-js-tutorial/ https://github.com/cowboyd/handlebars.rb#block-helpers

注意事项

asset_path输出一个可以有摘要的路径,这让事情变得有点复杂。当您在 URL 中包含摘要时,仅在 Assets 路径前添加是无济于事的。

您的选择:

  • 使用https://github.com/alexspeller/non-stupid-digest-assets这也将允许访问非摘要 URL
  • 或者,创建一个字典,将所有文件名作为键,将最终 URL 作为值 - 遍历 Rails.root.join("app/assets/**/*.*")对于每条路径,您的值为 view_context.asset_path(path)并在 JS 助手中使用这个字典
  • 或者,预编译 .hbs并将 Assets 路径替换为最终路径(使用 .hbs.erb 或仅使用 rake 任务)。

没有什么是完美的,但以上任何一种都能满足您的需求。

关于ruby-on-rails - Rails 4 中的 Handlebars + Images - 如何获得正确的 asset_path?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28261443/

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