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.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
Rails 3の場合、具体的には、それを行うための標準的な方法は、ApplicationController
にdefault_url_options
メソッドを追加することです。
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