Использование url_for в модуле папки lib

У меня есть модель с полем типа "тип" и поле "значение". Поле типа будет определять, как "значение" анализируется перед рендерингом. Я хочу, чтобы это было легко расширяемым, поэтому я помещаю различные классы "formatter" в свою папку lib.

Один из моих "форматировщиков" имеет вызов url_for:

class CustomTypeFormatter 
  include ActionView::Helpers::TextHelper
  include ActionView::Helpers

  def show
    raw sanitize( auto_link( value ) )
  end

  def get_url(page)
    url_for( :controller => :my_controller, :action => :show, :path => page.path )
  end

end

Проблема в том, что url_for поднимает эту ошибку:

undefined local variable or method `_routes'

Я думаю, что я просто отсутствую. Кто-нибудь знает, что это должно быть?

** UPDATE ***

Здесь часть трассировки стека:

actionpack (3.0.7) lib/action_dispatch/routing/url_for.rb:131:in `url_for'
actionpack (3.0.7) lib/action_view/helpers/url_helper.rb:99:in `url_for'

Итак, я думаю, что это должна быть зависимость от ActiveDispatch, хотя я не могу понять

Ответы

Ответ 2

В качестве альтернативы url_for вы можете использовать Rails.application.routes.url_helpers, просто добавив в маршрут :as, как в следующем примере:

get "sessions/destroy/:param_id", as: :logout 

так что вы можете использовать его следующим образом:

Rails.application.routes.url_helpers.logout_path(:param_id => your_value)

Это будет сделано так же, как url_for

Надеюсь, это поможет