2011-03-21 34 views
29

Làm cách nào để nhận đường dẫn đến tài nguyên trong mô hình? Tôi cần phải lưu trữ nó trong cơ sở dữ liệu và muốn có cùng một url như bạn nhận được từ resourcename_path (tài nguyên)Đường ray, nhận đường dẫn tài nguyên theo kiểu

+2

Đối với câu trả lời đầy đủ nhất, xem http://stackoverflow.com/q/341143/793946 –

Trả lời

38

Trong Rails 3, bạn có thể bao gồm những người trợ giúp url trong mô hình (mặc dù nó không phải là cách tốt nhất để xử lý điều):

class MyClass < ActiveRecord::Base 
    include Rails.application.routes.url_helpers 
end 

Trong Rails 2, tôi nghĩ rằng đó là include ActionController::UrlWriter, nhưng tôi không thể nhớ. Google là bạn của bạn.

+1

Rails 2 là ActionView :: Helpers: UrlHelper và ActionController :: UrlWriter – jvatic

+0

Rails của bạn 3 giải pháp tạo ra các lỗi sau: RuntimeError : Thiếu máy chủ để liên kết đến! Vui lòng cung cấp: thông số máy chủ hoặc đặt default_url_options [: host] – jvatic

+0

@jvatic, Nếu bạn sử dụng _url như trái ngược với _path, bạn cần phải cho biết máy chủ lưu trữ là gì. Theo quan điểm, nó có thể lấy máy chủ hiện tại, nhưng các mô hình không có kiến ​​thức về điều đó và vì vậy cần phải được cho biết những gì để sử dụng. – idlefingers

60

Trong Rails 3 và Rails 4 bạn có thể sử dụng:

Rails.application.routes.url_helpers 

ví dụ

Rails.application.routes.url_helpers.posts_path 
+1

Một giờ tìm kiếm và không ai quản lý cho tôi câu trả lời đơn giản và rõ ràng như bạn. Cảm ơn rất nhiều. – dimitarvp

+3

FYI, nếu bạn cần truy cập các tuyến đường cho động cơ, tương đương là: MyEngineName :: Engine.routes.url_helpers.some_path –

+0

Cảm ơn Theo! Chỉ cần những gì tôi đang tìm kiếm. – Docunext

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