【问题标题】:Best way to display images from Rails Asset Pipeline using AngularJS?使用 AngularJS 从 Rails Asset Pipeline 显示图像的最佳方法?
【发布时间】:2013-10-20 00:34:58
【问题描述】:

我正在开发一个带有 Angular 驱动前端的 Rails 应用程序。我想将我的 Rails 资产文件夹中的图像包含到一个视图中,该视图使用 ng-switch 指令仅在某些上下文中显示。我尝试了几个解决方案,例如将所有其他(Rails 服务的)图像的文件路径输入到 <img> 标记的 src 中。我还尝试在包含角度控制器的咖啡脚本文件中添加一个 erb 后缀,然后执行以下操作:

$scope.logoSrc = '<%= asset_path("images/logo_grey.png") %>'

并在图像标记中使用ng-src 指令,但这会产生 404。

如果有帮助,很高兴发布更多我的代码。提前感谢您的帮助!

【问题讨论】:

  • 你的asset_path解决方案应该不错,结果js是什么?
  • @zeantsoi 不,不幸的是还没有。
  • @apneadiving 生成的 JS 是 return $scope.logoSrc = '/assets/images/logo_grey.png';
  • 错误是(No route matches [GET] "/assets/lapel-l-logo-dark-grey.png")...怎么不是同一张图?

标签: ruby-on-rails angularjs coffeescript asset-pipeline


【解决方案1】:

尝试以下方法:

$scope.logoSrc = '<%= asset_path("logo_grey.png") %>'

根据 Rails 指南的section 2.3.3

如果您向 JavaScript 资产添加 erb 扩展,使其类似于 application.js.erb,那么您可以在 JavaScript 代码中使用 assets_path 帮助器:

$('#logo').attr({
  src: "<%= asset_path('logo.png') %>"
});

【讨论】:

  • 不幸的是,这仍然产生ActionController::RoutingError (No route matches [GET] "/assets/lapel-l-logo-dark-grey.png")
猜你喜欢
  • 2014-04-29
  • 1970-01-01
  • 1970-01-01
  • 2013-07-17
  • 2014-07-25
  • 2015-06-11
  • 2011-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多