質問

私は、サインアップの確認メールを送信するためにactionmailerのを使用しています。電子メールは、ユーザを確認するために戻ってサイトへのリンクが含まれている必要がありますが、私は(ドメインなどを含む)の完全なURLを生成するためのRailsのを説得することはできません。

私が使用しています:

<%= url_for :controller => 'login', :action => 'verify', :guid => @user.new_user.guid, :only_path => false, :host => 'http://plantality.com' %>

私の見解では、

パートB:

私は上記のリンク内のホストexpliciltyを指定しない場合は、

開発モードでは、不満をレール。しかし、私は生産でこれを行うにはしたくありません。任意のソリューション?

他のヒント

私はそれはあなたが望むものであるのかはわからないが、設定/環境/ development.rbにあなたはメーラのURL

のデフォルトオプションを指定することができます
config.action_mailer.default_url_options = {
  :host => "your.host.org",
  :port => 3000
}

あなたが設定/環境/ production.rbで同じことを行うことができます。

私は、以前のソリューションは非常に複雑に見える理由は分からないが、私はここにいるので、なぜ私の2セントを与えることはありません...

/config/environmentsと追加して行きます:

config.absolute_site_url = 'your site url'

それぞれの環境のために(すなわち。development.rb、test.rb、またはproduction.rbで)。 Webサーバーを再起動します。

これは、目的のURLを取得するためにRails.application.config.absolute_site_urlを呼び出すことができます。プラグインや奇妙なチートの必要は、単にアプリケーションの広い変数としてサイトのURLを保存しません。

私はそのことを100%正しい方法だと思いますが、これも解決策になることができます:

を使用して、資産のホストを参照してくださいドキュメントに。あなたはasset_hostを指定する必要があります。あなたはまた、要求の連鎖"#{request.protocol}#{request.host_with_port}/login/?guid=#{@user.new_user.guid}"から動的に構築することができます。

URLを生成するには、これを試してください。

Rails.application.routes.url_helpers.user_url(User.first.id, host: 'yourhost.io')

これは、このようなURLを生成します。

  

http://yourhost.io/users/1する

同様に、あなたは、いくつかのparamsを渡すことができます。

expires = Time.now + 2.days
params = {expires: expires}
u = User.first.id

Rails.application.routes.url_helpers.user_url(u, params, host: 'host.com')

生成されます:

  

http://yourhost.io /users/1.expires=2018-08-12+15%253A52%253A15+%252B0300する

リンクの有効期限が切れていない場合は、アクションにwerifiことができるように

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top