2010-10-07 23 views
13

tôi biết rằng làmRubyOnRails: url_for gốc ứng dụng

url_for(:only_path => false, :controller => 'home') 

tôi sẽ nhận được, ví dụ, http: // localhost/home

Nhưng làm thế nào để xử lý để genereate http:// localhost

Trả lời

11

Tùy thuộc vào mục tiêu của bạn, có một số cách để sử dụng tên máy chủ hoặc URL cơ sở. Đối với trường hợp chung, "Tôi chỉ cần một URL cơ sở đáng tin cậy mà tôi có thể sử dụng ở bất cứ đâu", tôi sử dụng phương pháp cấu hình.

# via routes.rb 
map.root :controller => "foo", :action => "bar" 
# view/controller: 
root_url # inflexible. root_url will only ever be one URL 

# via request object 
url_for("http://"+request.host) # not available in models 

# via config file (see railscast 85) 
# environment.rb 
APP_CONFIG = YAML.load_file("#{RAILS_ROOT}/config/config.yml")[RAILS_ENV] 
# config/config.yml 
development: 
    server_name: localhost:3000 
production: 
    server_name: foo.com 
# view/controller: 
url_for(APP_CONFIG('server_name')) 
12

để có được http://localhost, bạn sẽ chỉ cần:

<%= link_to "Home", root_path %> 

Điều đó sẽ tạo ra: <a href="/">Home</a> mà hiệu quả sẽ liên kết đến http://localhost

+0

Để được rõ ràng, bản đồ root_path để "/" trong khi bản đồ root_url đến URL gốc tuyệt đối (ví dụ "http: // localhost: 3000 /") – user456584

2

Bạn cũng có thể sử dụng: ActionController :: Base. relative_url_root

tức là #{ActionController::Base.relative_url_root}/images/my_img.jpg

8

Đây là câu hỏi cũ nhưng vẫn xếp hạng cao trong tìm kiếm. Hiện tại, sử dụng root_url.

ví dụ:

<%= link_to "fully qualified root", root_url %> 

sẽ tạo

<a href="http://www.example.com/">fully qualified root</a> 
Các vấn đề liên quan