1

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

<% 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 有关,但看到我没有收到任何错误,我认为这会起作用。

4

2 回答 2

1

Rails.root在rails 2中工作吗?可能是RAILS_ROOT

于 2013-09-04T10:19:05.437 回答
1

Rails.root返回一个Pathname。向 a 添加绝对路径会Pathname删除Pathname.

IE。

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返回 a进行比较String

RAILS_ROOT #=> "/foo/bar"
RAILS_ROOT + "baz" #=> "/foo/barbaz"
RAILS_ROOT + "/baz" #=> "/foo/bar/baz"
于 2013-09-04T10:25:22.463 回答