我需要編寫完整的路徑,因此需要知道rails_root域是什麼。我怎麼做?例如:如何在Rails 3中的控制器中編寫完整路徑?
string = "{RAILS_ROOT}/vendors/#{@vendor.id}"
什麼是「RAILS_ROOT」給我相當於全域,這是我的應用程序?所以在開發過程中,它將引用localhost:3000並在我的heroku站點上提供正確的完整域名?
我需要編寫完整的路徑,因此需要知道rails_root域是什麼。我怎麼做?例如:如何在Rails 3中的控制器中編寫完整路徑?
string = "{RAILS_ROOT}/vendors/#{@vendor.id}"
什麼是「RAILS_ROOT」給我相當於全域,這是我的應用程序?所以在開發過程中,它將引用localhost:3000並在我的heroku站點上提供正確的完整域名?
嘗試:
File.realpath(RAILS_ROOT)
你應該總是避免,如果可能的話,硬編碼的路徑,因爲它不夠靈活,更容易導致在以後斷開的鏈接。另外,您可以使用Rails路由,這是一種優雅的方式,可以在Rails中一致地生成所有內容,而無需自己創建複合部分。
如果您在路線設置正確,你應該能夠調用:
link_to "View vendor", vendor_url(@vendor.id)
Rails中Vendor_url(@vendor.id)
爲您提供了完整的URL,然後你就可以包含你的string
變量。以下是如何生成以上所需的路線:
# in routes.rb
resources :vendors
您可以訪問請求對象。 request.host_with_port會給你主機名和端口號。 request.protocol會爲您提供協議(http://或https://)。 request.fullpath會給你帶查詢參數的路徑。
我在答案中添加了更多信息。 – sscirrus 2011-05-03 00:12:38
順便說一下,在Rails 3中,您應該使用Rails.root而不是RAILS_ROOT。 RAILS_ROOT已棄用。 – 2011-05-03 04:11:11
Rails.root我猜不對,它只是給出文件路徑,沒有tdomain ....我怎麼做... – Angela 2011-05-03 16:31:03