如何在Rails 3中的控制器中编写完整路径?

时间:2011-05-02 22:57:11

标签: ruby-on-rails

我需要编写完整路径,因此需要知道rails_root域是什么。我怎么做?例如:

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

“RAILS_ROOT”相当于给我一个完整的域名适用于我的应用程序?那么在开发过程中,它会将localhost:3000和我的heroku网站上的正确完整域替换为什么?

3 个答案:

答案 0 :(得分:2)

如果可能的话,您应该始终避免对您的路径进行硬编码,因为它不太灵活,并且在将来更容易导致链接断开。另外,您可以使用Rails路由,这是一种在Rails中生成所有内容的优雅方式,无需自己创建复合部件。

如果您的路线设置正确,您应该可以致电:

link_to "View vendor", vendor_url(@vendor.id)
Rails中的

Vendor_url(@vendor.id)会为您提供完整的网址,然后您可以在string变量中包含该网址。以下是如何生成上述所需的路线:

# in routes.rb
resources :vendors

答案 1 :(得分:0)

尝试:

File.realpath(RAILS_ROOT)

答案 2 :(得分:0)

您可以访问请求对象。 request.host_with_port 会为您提供主机名和端口。 request.protocol 会为您提供协议(http://或https://)。 request.fullpath 会为您提供查询参数的路径。