Используйте image_url или image_path в классе observer

#ruby-on-rails #observer-pattern

#ruby-on-rails #observer-шаблон

Вопрос:

Я хочу сделать некоторые публикации в Facebook из класса observer, однако я хочу ссылаться на изображение со своего сервера. В прошлом у меня было несколько довольно хакерских методов для этого, но теперь, когда появились новые ресурсы, я подумал, что мог бы использовать методы image_path или image_url.

Однако, похоже, я не могу понять, как их вызвать. Они не являются методами уровня класса ActionView::Helpers::AssetTagHelper, что делает

 ActionView::Helpers::AssetTagHelper.image_url
  

Не работает.

Ответ №1:

Прежде всего, я не думаю image_url , что существует. Я вижу только image_path в API.

Чтобы иметь возможность использовать этот метод, вы должны включить модуль AssetTagHelper:

 include ActionView::Helpers::AssetTagHelper
image_path('my_image.png')
  

В Rails 4 включить AssetUrlHelper:

 include ActionView::Helpers::AssetUrlHelper
image_path('my_image.png')
  

Комментарии:

1. @Matrix с rails 4 вы должны быть в состоянии это сделать: ActionController::Base.helpers.image_path('my_image.png')

2. На самом деле image_url существует в Rails 4 API

Ответ №2:

В Rails 4 мы можем использовать image_url host атрибут with .

Как упоминал @piotrkaczmarek выше, нам нужно включить AssetUrlHelper.

 include ActionView::Helpers::AssetUrlHelper
image_url('image.jpg', host: 'http://example.com')