确定Rails 2中是否存在图像

时间:2013-09-04 10:08:43

标签: ruby-on-rails ruby-on-rails-2

我正在尝试检查文件是否存在,以便我可以显示图像或占位符,但始终显示占位符。如果删除条件语句,则徽标显示正常。

<% if File.exists?(Rails.root + '/public/images/portal/logos/' + @organisation_id + '.png') %>
  <img src="/images/portal/logos/<%= @organisation_id %>.png" alt="<%= @person.organisation.name %>">
<% else %>
  <img src="http://placehold.it/300x83&text=Please+upload+your+company+logo">
<% end %>

我已经阅读了一些问题,但大多数似乎与Rails 3有关,但看到我没有收到任何错误,我认为这会有效。

2 个答案:

答案 0 :(得分:1)

Rails.root正在使用rails 2吗?它可能是RAILS_ROOT

答案 1 :(得分:1)

Rails.root返回Pathname。添加Pathname的绝对路径会删除Pathname中的现有路径。

Rails.root #=> #<Pathname:/foo/bar>
Rails.root + "baz" #=> #<Pathname:/foo/bar/baz>
Rails.root + "/baz" #=> #<Pathname:/baz>

如果你这样做

Rails.root + 'public/images/portal/logos/#{@organisation_id}.png'

它应该有用。或者甚至更好:

Rails.root.join("public/images/portal/logos", "#{@organisation_id.png')

将其与RAILS_ROOT进行比较,后者返回String

RAILS_ROOT #=> "/foo/bar"
RAILS_ROOT + "baz" #=> "/foo/barbaz"
RAILS_ROOT + "/baz" #=> "/foo/bar/baz"