現在、これは開発ホストで機能するものを使用していますが、実稼働環境に移行するときに{:Host => ""}コードを手動で変更する必要があります。
def share_all
url = Rails.application.routes.url_helpers.post_url(self, :Host => 'localhost:3000')
if user.authentications.where(:provider => 'Twitter').any?
user.Twitter_share(url)
end
end
これを使用して、環境ごとにdefault_url_optionsを定義します。
def share_all
url = Rails.application.routes.url_helpers.post_url(self)
if user.authentications.where(:provider => 'Twitter').any?
user.Twitter_share(url)
end
end
これをconfig/environments/development.rbに追加しようとしましたが、「リンクするホストがありません!:Hostパラメーターを指定するか、default_url_options [:Host]を設定してください」というエラーが表示されます。
config.action_controller.default_url_options = {:Host => "localhost:3000"}
そして、私はそれをこのように試しました:
config.action_controller.default_url_options = {:Host => "localhost", :port => "3000"}
編集:
私もこれに従いましたが、それでも同じエラーガイド http://edgeguides.rubyonrails.org/action_controller_overview.html#default_url_options
class ApplicationController < ActionController::Base
protect_from_forgery
include ApplicationHelper
def default_url_options
if Rails.env.production?
{ :Host => "example.com"}
else
{:Host => "example1.com"}
end
end
end
これは私を夢中にさせています、ここで何が欠けていますか?
さて、私はそれを書く正しい方法を見つけました
Rails.application.routes.default_url_options[:Host] = 'localhost:3000'
:)
このファイルへの変更を有効にするには、サーバーを再起動する必要があります。
ActionMailer
からアプリケーションのdefault_url_options
を継承します。可能な限りDRYとして保持するため、理想的には、ActionMailer
実際は、Application
の他の部分とは異なるホストとポートを使用します。
Application
全体にdefault_url_options
を設定するには、config/environment.rb
ファイルに次の行を追加します(MyApp
をアプリの名前に変更します):
# Set the default Host and port to be the same as Action Mailer.
MyApp::Application.default_url_options = MyApp::Application.config.action_mailer.default_url_options
これにより問題が修正され、Application
のdefault_url_options
がconfig.action_mailer.default_url_options
と同じに自動的に設定されます。
$ MyApp::Application.config.action_mailer.default_url_options
#=> {:Host=>"lvh.me", :port=>"3000"}
$ MyApp::Application.default_url_options
#=> {:Host=>"lvh.me", :port=>"3000"}
config.action_mailer.default_url_options = {:Host => "your Host"}
たとえば、ホストlocalhost:3000
これをtest.rb、development.rb、production.rbファイルに配置できます。ホストは環境ごとに異なる可能性があります。