2010-09-01 39 views
41

Rất nhiều người dùng của tôi tiếp tục truy cập vào http://(rails URL ứng dụng)/blog, nhưng tôi thực sự không có blog. Cuối cùng tôi đã thiết lập một blog Posterous và bây giờ muốn hướng người dùng của mình đến đó. Có cách nào để cấu hình này bằng cách sử dụng routes.rb? Có cách nào tốt hơn không liên quan đến việc chỉnh sửa tệp httpd.conf không?Tạo tuyến đường ray đến một URL bên ngoài

Trả lời

57

Phụ thuộc vào phiên bản Rails bạn đang sử dụng.

Rails 3

# in routes.rb 
match "/blog" => redirect("http://example.com/blog"), :as => :blog 

Rails 2

# in routes.rb 
map.blog '/blog', 
    :controller => "a_helper_controller", 
    :action => "redirect_to_blog" 

# in a_helper_controller.rb 
def redirect_to_blog 
    redirect_to "http://example.com/blog" 
end 
+0

Cảm ơn vì điều này. Bất kỳ đề xuất về những gì bộ điều khiển để đặt nó vào hoặc những gì để đặt tên cho một bộ điều khiển trợ giúp mới? –

+1

Nếu bạn muốn sử dụng target = "_ blank" trong tuyến đường của mình thì sao? Có thể chỉ định một tuyến đường như sau: def external_url(); "http://example.com/blog"; end được định nghĩa trong routes.rb? Tôi nghĩ rằng giải pháp duy nhất cho những người đó là xác định họ là người trợ giúp. – tothemario

+0

Cảm ơn bạn rất nhiều! –

58

Tôi biết điều này là cũ, vì vậy trong trường hợp ai đó cần này cho đường ray 4:

get "/blog" => redirect("http://example.com/blog") 

Sử dụng thay vì Đối sánh trong Rails 4, nếu không bạn sẽ gặp phải lỗi Thời gian chạy

+0

Điều này có vẻ phù hợp với tôi nhưng tôi gặp sự cố từ khách hàng sử dụng trình khám phá internet: Hiệp hội tệp Loại Mime: application/json, Windows không nhận dạng loại MIME này. – user1434177

+0

Rất hữu ích cho những gì tôi đang làm việc. Cảm ơn nhiều! – kdweber89

+0

Có ai biết cách làm điều này trong đường ray 5 không? Dường như không làm việc theo cách nó được sử dụng trong Rails 4 nhưng tôi dường như không thể tìm thấy tài nguyên trên này cho đường ray 5. Tôi tiếp tục nhận được một 404. – JohnSalzarulo

Các vấn đề liên quan