自分のサービスオブジェクトでルートヘルパーを利用できるようにしたいと考えました。Railsルートヘルパーメソッドがサービスオブジェクトに正しく含まれていない
例:
blog_path(blog) #make available in service object
問題は、私が乗客を使用していますということなので、アプリケーションは、ドメインに相対です。
例:パスのロードではなく、www.my_domain.com/blog/1
の代わりに、乗客はパスをwww.my_domain.com/this_app/blog/1
でロードします。
現在、私のサービスオブジェクトの私のルートヘルパーは、第1のバージョンをレンダリングしており、第2のバージョンはレンダリングしていません。ここで
は私のサービスオブジェクトがどのように見えるかです:ローカルホスト上で、私は相対パスを持っていないので、
class BuildLink
include ActionView::Helpers::TagHelper
include ActionView::Helpers::UrlHelper
RouteHelpers = Rails.application.routes.url_helpers
attr_accessor :blog
def initialize(blog)
@blog = blog
end
def init
content_tag(:li, link_to(“Show Blog“, RouteHelpers.blog_path(blog)))
end
end
ルートがローカルで動作します。しかし、プロダクションに入れると、乗客はアプリケーション名を相対パスとして期待していますが、サービスオブジェクトは生成するURL内にアプリケーション名を含めていないため動作しません。
この相対パスは、アプリケーション内のどこでも動作しますが、サービスオブジェクト内の相対パスは適切に生成されません。