2011-10-18 35 views
9

Trình trợ giúp chế độ xem trong mẫu Mailer của tôi cung cấp cho tôi các URL tương đối với biểu định kiểu và hình ảnh. Tất nhiên, điều này sẽ không hoạt động nếu tôi đang xem email trong Gmail chẳng hạn.Làm thế nào để có đường dẫn tuyệt đối cho bảng định kiểu trong thư với đường ống nội dung?

Trong apps/views/layouts/mailer.html.erb

<%= stylesheet_link_tag "application" %> 
... 
<%= link_to(image_tag("logo.png"), "http://mysite.com") %> 

ám như:

<link href="/assets/application-c90478153616a4165babd8cc6f4a28de.css" media="screen" rel="stylesheet" type="text/css" /> 
... 
<a href="http://mysite.com"><img alt="Logo" src="/assets/logo-d3adbf8d0a7f7b6473e2130838635fed.png" /></a> 

Làm thế nào để Rails để cho tôi liên kết tuyệt đối để thay thế? Tôi đang ở trên Rails 3.1, đường ống nội dung có hiệu lực.

Trả lời

13

`config.action_controller.asset_host xử lý tiền tố máy chủ trong chế độ xem được tạo từ ActionController.

Đối với bất cứ điều gì tạo ra trong một email mà bạn đang tìm kiếm các tùy chọn cấu hình ActionMailer, cụ thể hơn:

  • ActionMailer::Base.asset_host sẽ xử lý của bạn image_tags
  • ActionMailer::Base.default_url_options[:host] sẽ chăm sóc link_to thẻ của bạn.

ví dụ:

ActionMailer::Base.asset_host     = "http://blah.com" 
ActionMailer::Base.default_url_options[:host] = "blah.com" 

Lưu ý rằng bạn không cần phải xác định tiền tố http cho các máy chủ url mặc định, bạn sẽ cho các máy chủ tài sản.

Tôi đã chỉ định những điều này bên trong môi trường .rb sau bộ khởi tạo ứng dụng. Tôi sẽ khuyên bạn nên thiết lập một biến cấu hình ứng dụng cho mỗi miền môi trường.

+0

Điều này là chính xác, bạn * có * để có" http: // "trong máy chủ lưu trữ nội dung cho bưu phẩm –

3

Điều này có thể hơi khó khăn, nhưng nếu bạn chỉ định máy chủ lưu trữ nội dung, tất cả helpers will take it into account khi hiển thị liên kết. Vì vậy, nếu bạn đặt

config.action_controller.asset_host = "http://mysite.com" 

trong cấu hình, stylesheet_link_tag sẽ bao gồm tên máy chủ.

+0

Cảm ơn bạn đã trả lời. Thật không may, điều này không hoạt động đối với các khuôn mẫu được hiển thị cho người gửi thư. Bất kỳ ý tưởng nào khác? – rocketscientist

+0

cũng không hoạt động đối với tôi. :(Đây có phải là lỗi rails không? –

+0

Bạn có lỗi đánh máy, phải là 'config.action_mailer.asset_host' – Dex

11

Đối với đường ray 3.2 và sử dụng ActionMailer:

config.action_mailer.asset_host = "http://www.example.com" 
+0

Cảm ơn cho câu trả lời đúng. – barelyknown

0

Trong chủ đề này rocketscientist và Joe được hỏi về ý tưởng khác:

http://apidock.com/rails/ActionView/Helpers/AssetTagHelper/stylesheet_link_tag

Bạn có thể tạo ra đầy đủ css như sau (nếu bạn không quan tâm đến việc lưu trữ nội dung). Tuy nhiên, câu trả lời của David Radcliffe nên hoạt động.

 
stylesheet_link_tag "http://www.railsapplication.com/style.css" # => 
    <link href="http://www.railsapplication.com/style.css" media="screen" rel="stylesheet" type="text/css" /> 
Các vấn đề liên quan