gotoshin

主に学んだ事の自分メモ用です。記事に書くまでも無いような事はhttps://scrapbox.io/study-diary/に書いてます。

Rails url_helperをSerializerで使いたい

url_helperとは?

一言でいうとリンクやURLを生成するためのメソッド郡

どんな時に使うの?

例えばurl_helperのurl_forといメソッドを使うと以下の様にオブジェクトからURLを生成する事が可能。

@user = User.find(2)
url_for(@user)
# => "/users/2"

例えばActive Storageの画像イメージのリンクを生成したりする事が可能。

url_for(object.image)

Serializerで使えるようにするまで

しかし使えるようにするために一手間必要。

Serializer内に以下を記述する。

include Rails.application.routes.url_helpers
  • includeとは moduleをMix-inする事が可能。

  • moduleとは インスタンスを持つことが出来ないmethod郡。 rubyは多重継承出来ないため、moduleがあると便利。

ただ、これだけでもダメ・・・

デフォルトのURLを設定

config/environments/development.rbにてデフォルトのURLを設定する必要がある

Rails.application.routes.default_url_options[:host] = 'localhost:4000'