2011-10-21 7 views
9

Tôi có bưu phẩm trên đường ray 3.1 có phần đính kèm nội tuyến.asset_url trong thư trên đường ray 3.1

Để mở tập tin đính kèm mà tôi sử dụng mã này:

attachments["rails.png"] = File.read("#{Rails.root}/app/assets/images/Rails.png") 

là Có cách nào để thay đổi điều đó với một cái gì đó giống như assets_url?

+0

Bạn không cần (cũng không muốn) sử dụng nội dung nào đó như asset_url cho việc này ... Nó chỉ giúp bạn tiết kiệm một vài từ đầu tiên. Ngoài ra, phiên bản ngắn hơn: 'File.read (Rails.root.join ('app/assets/images', 'Rails.png'))' mà từ đó bạn có thể tạo ra helper "asset_url" của riêng bạn. –

+0

nhưng tôi có thể đặt nội dung của mình vào tệp tài sản của nhà cung cấp, như tệp js bên ngoài hoặc hình ảnh bên ngoài mà tôi muốn được thêm vào phần nội dung của email –

+0

Bạn có thể làm điều gì đó như 'File.read (Rails.root). join ('public', view_context.asset_path ('Rails.png'))) '? Nó sẽ hoạt động như tài sản được biên dịch luôn ở dạng công khai/tài sản. Điều đó 'view_context' có thể không cần thiết (hoặc nó có thể không có sẵn trong ActionMailer :() nhưng hãy thử nó! –

Trả lời

10

Nếu tôi hiểu chính xác, bạn muốn sử dụng chức năng tìm kiếm của đường ống nội dung để định vị đường dẫn cục bộ cho một nội dung cụ thể, do đó bạn không phải mã hóa thư mục nào. làm điều này:

<YourAppName>::Application.assets.find_asset('Rails.png').pathname 

Điều này sẽ xác định vị trí nội dung bằng cách sử dụng đường ống tiêu chuẩn/sprockets tìm kiếm và cung cấp cho bạn đường dẫn đầy đủ của tệp.

+0

Bạn thưa ... chỉ cần cứu ngày của tôi ... cảm ơn –

+0

hi, điều này mang lại cho tôi con đường 'ứng dụng/tài sản/... "nhưng không cung cấp đường dẫn tài sản thực tế trong' công khai/tài sản '. Thật tuyệt khi biết điều này mặc dù, nhưng ngay cả trong môi trường sản xuất, nó không cho tôi thư mục tôi muốn. biết mặc dù tôi đã thêm vào ghi chú của tôi. – FireDragon