Rails 3.1 图像的绝对 URL
我正在使用 Rails 3.1。我正在尝试解决这个问题,令我惊讶的是,Rails 似乎根本没有提供这种方法。也许我错了。
谁能告诉我如何获得图像的完整绝对 URL?
我使用 asset_path(image.png) ,它为我提供了在应用程序中使用的相对路径。我尝试执行 root_url + asset_path(image.png)
但这只是给了我一个带有双斜杠的 http://localhost:3000//assets/image.png
有人有有效的方法吗?
I'm using Rails 3.1. I'm trying to figure this out, and to my surprise, it is starting to seem that rails does not come with this method at all. Maybe im wrong.
Can anyone show how I can get a full absolute URL to an image?
I use asset_path(image.png)
which gives me the relative path to use within the app. I tried doing a root_url + asset_path(image.png)
but that just gives me a http://localhost:3000//assets/image.png
with the double slashes
Anyone have an efficient way of doing this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
请参阅文档使用资产主机部分>。您需要指定一个
asset_host
。您还可以通过请求链动态构建它"#{request.protocol}#{request.host_with_port}"
See the Using asset hosts section in the documentation. You need to specify an
asset_host
. You can also construct it dynamically from the request chaining"#{request.protocol}#{request.host_with_port}"
将其放入
application_helper.rb
中,然后您可以在视图中使用
asset_url
。put this in
application_helper.rb
then you can use
asset_url
in your views.对于 Rails 4,也许更早,请使用:
per https://github.com/fphilipe/ premailer-rails/issues/16
For Rails 4, and maybe earlier, use:
per https://github.com/fphilipe/premailer-rails/issues/16
在我的 config/environments/*.rb 中,我已经为每个环境量身定制了这个:
因此添加到每个文件很简单
。然后
asset_path
将奇迹般地表现得就像asset_url
一样。In my
config/environments/*.rb
I already have this tailored for each environment:So it was a simple matter of adding
to each file. Then
asset_path
will miraculously behave as if it wereasset_url
.示例文件夹结构。
如果您想生成绝对标志图像路径,我们可以在 ApplicationHelper 中添加两个方法:
在 apps/view/products.html.erb 中。我们只能调用:
最终结果:
http://my_domain.com:3000/资产/标志/32x32/en.png
Example folder structure.
If you want to generate absolute flag image path we can add in to our ApplicationHelper two methods:
Into our apps/view/products.html.erb. We must to call only:
Final result:
http://my_domain.com:3000/assets/flags/32x32/en.png
您可以这样做:
...修剪根网址中的尾部斜杠吗?
Could you just do:
...to trim the trailing slash in the root url?
您需要使用“asset_url”而不是*asset_path*。
Bcz '_path' 总是返回相对路径,而 '_url' 将返回绝对 url。
You need to use 'asset_url' instead *asset_path*.
Bcz '_path' always return relative path and '_url' will return absolute url.