我有一张图片,其中包含carrierwave上传:

Image.find(:first).image.url #=> "/uploads/image/4d90/display_foo.jpg"

在我看来,我想找到这个的绝对url.把root_url加在一起会得到一个双/.

root_url + image.url #=> http://localhost:3000//uploads/image/4d90/display_foo.jpg

我不能使用url_for(据我所知),因为either允许传递路径,or允许传递选项列表来标识资源,:only_path允许传递选项.因为我没有可以通过"控制器"+"操作"识别的资源,所以我不能使用:only_path选项.

url_for(image.url, :only_path => true) #=> wrong amount of parameters, 2 for 1

在Rails3中创建完整url路径的最干净、最好的方法是什么?

推荐答案

试试path种方法

Image.find(:first).image.path

UPD

request.host + Image.find(:first).image.url

你可以把它包起来作为一个帮手,让它永远干燥

request.protocol + request.host_with_port + Image.find(:first).image.url

Ruby-on-rails相关问答推荐

在数组中定位不匹配的索引

通过激励控制器正确更新Turbo帧信源

无法安装Ruby错误运行';__rvm_make-J4';,

在Ruby on rails中,重复访问ActiveRecordModel返回相同的对象:预期行为还是错误?

Ruby on Rails - 外键不匹配

如何让删除链接响应 Rails 7 中的 turbo_stream 和 html?

Ruby on Rails form_with 不显示错误,卡在服务器端

将日期时间转换为月、日和年?

ActiveRecord 回调列表

在一行中更改多个对象属性

如何确定 Rails 是从 CLI、控制台还是作为服务器运行?

Rails:设计:按角色登录后重定向

simple_forms 自定义数据属性

Rspec/Capybara 正在加载,循环要求被认为是有害的

如何拯救 OmniAuth::Strategies::OAuth2::CallbackError?

嵌套模型和父验证

保存后重定向到索引而不是显示

Rails 范围为 IS NOT NULL 并且不为空/空白?

如何从另一个调用 Capistrano 任务?

Ruby 1.9.2 和 Rails 3 无法打开 rails 控制台