ActionController :: Base#default_url_optionsは非推奨になっているため、rails3でデフォルトのURLオプションを設定する方法を知りたいと思います。デフォルトのURLオプションは静的ではありませんが、現在のリクエストに依存しています。
http://apidock.com/rails/ActionController/Base/default_url_options
ありがとう、コリン
ActionController :: Base#default_url_optionsは非推奨になっているため、rails3でデフォルトのURLオプションを設定する方法を知りたいと思います。デフォルトのURLオプションは静的ではありませんが、現在のリクエストに依存しています。
http://apidock.com/rails/ActionController/Base/default_url_options
ありがとう、コリン
現在のリクエストのURLオプションを設定するには、コントローラーで次のようなものを使用します。
class ApplicationController < ActionController::Base
def url_options
{ :profile => current_profile }.merge(super)
end
end
これで、:profile=>current_profileがパス/URLパラメーターに自動マージされます。
ルーティングの例:
scope ":profile" do
resources :comments
end
書くだけ:
comments_path
また、current_profileがto_paramを'lucas'に設定している場合:
/lucas/comments
推奨される方法は、ルーターにこれを処理するように指示することだと思います。
Rails.application.routes.default_url_options[:foo]= 'bar'
この行は、routes.rb
または初期化子のいずれかに配置できます。どちらでもいいです。環境に基づいて値が変更された場合は、環境構成に含めることもできます。
その apidock.com リンクは誤解を招くものです。default_url_options は非推奨ではありません。
http://guides.rubyonrails.org/action_controller_overview.html#default_url_options
特にRails 3の場合、これを行う標準的な方法は、default_url_options
メソッドをに追加することApplicationController
です.
class ApplicationController < ActionController::Base
def default_url_options
{
:host => "corin.example.com",
:port => "80" # Optional. Set nil to force Rails to omit
# the port if for some reason it's being
# included when you don't want it.
}
end
end
私はこれを自分で理解しなければならなかったので、それが機能することを知っています。
これは、Rails 3 ガイドから改作されています:
http://guides.rubyonrails.org/v3.2.21/action_controller_overview.html#default_url_options
Rails.application.routes.default_url_options[:host]= 'localhost:3000'
developmentemnt.rb / test.rb では、次のように簡潔に記述できます。
Rails.application.configure do
# ... other config ...
routes.default_url_options[:host] = 'localhost:3000'
end