Rails 3.1图像的绝对URL

ali*_*lik 31 ruby ruby-on-rails ruby-on-rails-3.1 asset-pipeline

我正在使用Rails 3.1.我试图解决这个问题,令我惊讶的是,似乎轨道根本就没有这种方法.也许我错了.

任何人都可以展示我如何获得图像的完整绝对URL?

我使用asset_path(image.png)它给了我在应用程序中使用的相对路径.我试过做一个,root_url + asset_path(image.png)但这只是给了我一个http://localhost:3000//assets/image.png双斜线

任何人都有一个有效的方法吗?

Sim*_*tti 24

请参阅文档中使用资产主机部分.你需要指定一个.您还可以从请求链中动态构造它asset_host"#{request.protocol}#{request.host_with_port}"

  • 使用``#{request.protocol}#{request.host_with_port}#{asset_path("image.png")}"` (16认同)

gre*_*reg 24

把它放进去 application_helper.rb

def asset_url asset
  "#{request.protocol}#{request.host_with_port}#{asset_path(asset)}"
end
Run Code Online (Sandbox Code Playgroud)

然后你可以asset_url在你的视图中使用.


Luk*_*e W 11

对于Rails 4,也许更早,使用:

config.action_mailer.asset_host = 'https://assets.com'
Run Code Online (Sandbox Code Playgroud)

https://github.com/fphilipe/premailer-rails/issues/16


Pra*_*art 6

在我,config/environments/*.rb我已经为每个环境量身定制:

config.domain = 'mysite.dev'
Run Code Online (Sandbox Code Playgroud)

所以这是一个简单的添加问题

config.action_controller.asset_host = "http://" + config.domain
Run Code Online (Sandbox Code Playgroud)

到每个文件.然后asset_path奇迹般地表现得好像是asset_url.

  • 我发现这个rails行为是错误的,`asset_path`应该是一个路径`asset_url`应该是一个url.如果有一个`asset_host` = /我真的不喜欢rails改变asset_path行为的方式 (2认同)