gpt4 book ai didi

ruby-on-rails - 如何从 Rails 应用程序中的引擎提供图像资源

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

我无法在我的引擎中获取图像资源以在主机应用程序内呈现。

由于 view/layout/application.html.erb 文件中的这样的代码,我的主机应用程序能够从引擎中获取 css 和 javascript:

 <%= stylesheet_link_tag    'my_engine/application', :media => 'all' %>
<%= javascript_include_tag 'my_engine/application' %>

但是,我不知道有类似的方法来包含来 self 的引擎的图像。关于如何让引擎的图像文件在主机应用程序中呈现的任何想法?

编辑:

在我的引擎的 engine.rb 文件中,我已经将图像目录添加到应用程序的目录中,如下所示:

initializer :assets do |config|
Rails.application.config.assets.paths << root.join("app", "assets", "images", "my_engine", "some_subdirectory")
end

并且 View 有一个如下所示的图像标签:

<%= image_tag "/my_engine/some_subdirectory/picture.png" %>

但是我的服务器日志,我看到了这个:

Started GET "/assets/some_subdirectory/picture.png" for 127.0.0.1 at 2014-04-06 20:11:38 -0500
Served asset /some_subdirectory/picture.png - 404 Not Found (3ms)

ActionController::RoutingError (No route matches [GET] "/assets/some_subdirectory/picture.png"):

最佳答案

你根本不需要这样做,因为 Rails 为你做:

initializer :assets do |config|
Rails.application.config.assets.paths << root.join("app", "assets", "images", "my_engine", "some_subdirectory")
end

相反,您可以像在应用程序中一样引用图像:

<%= image_tag "your_image.jpg" %>

我在这里假设 your_image.jpg 位于引擎中的 /app/assets/images/your_image.jpg 中。如果它在子目录中,则:

<%= image_tag "subdirectory/your_image.jpg" %>

除非文件位于 app/assets/images/your_engine/your_image.jpg 之类的地方,否则无需在路径中包含引擎名称,在这种情况下:

<%= image_tag "your_engine/your_image.jpg" %>

将是执行此操作的正确方法。

The Engines Guide还包含有关引擎的更多有用信息。

关于ruby-on-rails - 如何从 Rails 应用程序中的引擎提供图像资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22900375/

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