【问题标题】:Getting path of images from the model in Rails从 Rails 中的模型获取图像的路径
【发布时间】:2026-01-24 13:55:02
【问题描述】:

我正在开发一个使用名为 Gmaps4Rails 的模块的地图应用程序。使用这个 gem,我从我的模型中定义了图像的路径,并且可以根据我正在使用的图像的一些数据来获得它。 它在开发环境中运行良好,但由于找不到图像文件夹而在生产中中断。这是代码在模型内部的样子:

  def gmaps4rails_marker_picture

    {
    "picture" => "/images/oilpumpjack.png",
    "width" => "32",
    "height" => "32"
    }
  end

有什么简单的方法可以从模型中获取正确的路径(我不想硬编码)?

问候, 约翰

【问题讨论】:

  • 如何访问模板中的图像?您的资产目录是否在生产中的其他地方?
  • 资产目录与开发中的位置相同(相对于应用程序)。我正在使用内置的 gem 函数来访问地图: =gmaps({"map_options" => { "zoom" => 6,"center_latitude" => 65, "center_longitude" => -19},"markers" => { "数据" => @json }})

标签: ruby-on-rails-3 model


【解决方案1】:

如果您使用 Sprockets 提供图像,请尝试以下操作:

def gmaps4rails_marker_picture    
    {
    "picture" => ActionController::Base.helpers.asset_path('oilpumpjack.png'),
    "width" => "32",
    "height" => "32"
    }
end

【讨论】:

    【解决方案2】:

    试一试,它可能会起作用:

    改变

    "picture" => "/images/oilpumpjack.png"
    

    到这里

    "picture" => "#{Rails.root}/public/images/oilpumpjack.png"
    

    我在使用另一个 gem 时遇到了类似的问题。希望它有所帮助

    编辑

    在 config/environments/production.rb 集合中

    config.serve_static_assets = true
    

    【讨论】:

    • 我越来越近了。这会创建正确的路径,但现在我遇到了路由错误:Started GET "/var/app/public/images/oilpumpjack.png" for x.x.x.x at Sat Sep 10 20:52:56 +0000 2011 ActionController::RoutingError (没有路线匹配“/var/app/public/images/oilpumpjack.png”):
    • 不,我使用的是 Rails 3.0。我已经按照说明进行了操作,并且正在做正确的事情。非常感谢您的帮助,在我有时间仔细查看之前,我将使用默认标记。
    • 感谢 Hishalv,我已经将 config.serve_static_assets 设置为 true,但它没有效果(我在今天早些时候更改后重新启动了 apache)。
    最近更新 更多