2017-07-25 13 views
0

Phoenixアプリケーションをローカルで実行すると、すべてのリクエストのベースURLはhttp://localhost:4000のようになります。プロダクションでは、それはhttps://example.com/のようなものです。Phoenixアプリケーションの「ベースURL」を取得するにはどうすればよいですか?

このベースURLをJavaScriptに渡したいとします。どうすれば入手できますか?

注:

  • 私はconnをチェックする必要はありません。これは、コンパイル時またはブート時に設定したいものです。要求時ではありません。
  • Application.get_env(:myapp, MyApp.Endpoint)[:url][:host] %を確認できますが、スキーム(httpまたはhttps)またはポートは含まれていません。これをいくつかの場所からまとめなければならないかもしれないが、おそらくできるが、そうではないだろう。
+0

「dev.exs」で生成されたコメントに「http:」と「https:」の両方のキーを設定して、別のポート "? –

+0

Phoenix自体はエンドポイントの設定とElixirの組み込みの 'URI'モジュールを使ってURLを構築します:https://github.com/phoenixframework/phoenix/blob/10b6c1e8df915e82a4040f14f94afc1aed8ab47a/lib/phoenix/endpoint/supervisor.ex#L235-L255 – Dogbert

答えて

0

パスヘルパー

おっとを使用し、このための明白な解決策があります。 :)

MyApp.Router.Helpers.page_url(MyApp.Endpoint, :index) 

これには特定の名前付きルートを使用するのが少し厄介ですが、機能します。私はより意味のある解決策にはオープンしています。それはアプリのEndpointとしてコールバックで生成されたすべての関数について説明していますが、機能は(私が以前にチェックしていない)、少なくとも1.2以降で使用可能ですので、

関連する問題