2011-05-02 46 views
1

我需要編寫完整的路徑,因此需要知道rails_root域是什麼。我怎麼做?例如:如何在Rails 3中的控制器中編寫完整路徑?

string = "{RAILS_ROOT}/vendors/#{@vendor.id}" 

什麼是「RAILS_ROOT」給我相當於全域,這是我的應用程序?所以在開發過程中,它將引用localhost:3000並在我的heroku站點上提供正確的完整域名?

+0

我在答案中添加了更多信息。 – sscirrus 2011-05-03 00:12:38

+1

順便說一下,在Rails 3中,您應該使用Rails.root而不是RAILS_ROOT。 RAILS_ROOT已棄用。 – 2011-05-03 04:11:11

+0

Rails.root我猜不對,它只是給出文件路徑,沒有tdomain ....我怎麼做... – Angela 2011-05-03 16:31:03

回答

0

嘗試:

File.realpath(RAILS_ROOT) 
2

你應該總是避免,如果可能的話,硬編碼的路徑,因爲它不夠靈活,更容易導致在以後斷開的鏈接。另外,您可以使用Rails路由,這是一種優雅的方式,可以在Rails中一致地生成所有內容,而無需自己創建複合部分。

如果您在路線設置正確,你應該能夠調用:

link_to "View vendor", vendor_url(@vendor.id) 

Rails中Vendor_url(@vendor.id)爲您提供了完整的URL,然後你就可以包含你的string變量。以下是如何生成以上所需的路線:

# in routes.rb 
resources :vendors 
+0

助手不在控制器中工作.... – Angela 2011-05-02 23:16:53

+0

嘗試'vendor_url (@ vendor.id).to_s'。 – sscirrus 2011-05-02 23:30:48

+0

做路徑助手的工作 - 我讀到他們不在控制器...? – Angela 2011-05-03 04:48:13

0

您可以訪問請求對象。 request.host_with_port會給你主機名和端口號。 request.protocol會爲您提供協議(http://或https://)。 request.fullpath會給你帶查詢參數的路徑。

相關問題