4

Rails 4 アプリケーションがサブドメインでホストされている場合、たとえばsub.domain.com、Action Mailer テンプレートでサブドメインに正しくリンクする URL を取得するにはどうすればよいですか?

config/environments/production.rb:

config.action_mailer.default_url_options = { :host => 'sub.domain.com' }

アクション メーラー テンプレート リンクの例:

<%= user_url(@user) %>

電子メールでは、リンクは次のように表示されwww.domain.com/users/1ますsub.domain.com/users/1

4

4 に答える 4

4

これがまだあなたにとって問題であるとは思えませんが、これに関連して見つけた役立つものを追加したいと思いました.

さまざまな構成ファイルに default_url_options を追加する以外に (必要なすべての環境で必ず追加してください)、パスだけでなく URL 全体を取得する必要があります。

<%= url_for() %>

サブドメインまたはドメインをパラメーターとして指定できます。また、他のいくつかのオプション (apidock から) も指定できます。

url_for(options = nil) public 提供されたオプション、default_url_options、および routes.rb で定義されたルートに基づいて URL を生成します。次のオプションがサポートされています。

:only_path - true の場合、相対 URL が返されます。デフォルトは false です。

:protocol - 接続するプロトコル。デフォルトは「http」です。

:host - リンクのターゲットとなるホストを指定します。:only_path が false の場合、このオプションは明示的に、または default_url_options を介して指定する必要があります。

:subdomain - tld_length を使用してホストからサブドメインを分割し、リンクのサブドメインを指定します。false の場合、リンクのホスト部分からすべてのサブドメインを削除します。

:domain - ホストからドメインを分割する tld_length を使用して、リンクのドメインを指定します。

:tld_length - TLD ID を構成するラベルの数。:subdomain または :domain が指定されている場合にのみ使用されます。デフォルトは ActionDispatch::Http::URL.tld_length で、デフォルトは 1 です。

:port - オプションで、接続するポートを指定します。

:anchor - パスに追加されるアンカー名。

:trailing_slash - true の場合、「/archive/2009/」のように末尾にスラッシュを追加します</p>

:script_name - ドメイン ルートに対するアプリケーション パスを指定します。提供されている場合は、アプリケーション パスを先頭に追加します。

url_for に指定されたその他のキー (:controller、:action など) は、Routes モジュールに転送されます。

ルートの最後に「_url」を指定してlink_toを使用しました。このような:

<%= link_to 'Yes', response_approvals_url(t: @secret_token) %>
于 2014-06-05T20:38:51.990 に答える
0

私はそれを信じていません、キャッシングの問題です。メーラーを実行するために、delayed_job https://github.com/collectiveidea/delayed_jobを使用します。遅延ジョブ スクリプトが実行されている場合、メーラー テンプレートがキャッシュされているように見えます。

解決:RAILS_ENV=production bin/delayed_job restart

それでおしまい!何がどこにキャッシュされているかを知ることは有料です。

于 2013-10-11T08:39:09.800 に答える