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を返します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"
于 2013-09-04T10:25:22.463 に答える
1

Rails.rootRails 2で動作していますか?そうかも知れないRAILS_ROOT

于 2013-09-04T10:19:05.437 に答える