Rails에서 URL 헬퍼에 대한 기본 호스트를 어떻게 설정합니까?
나는 이와 같은 것을하고 싶다
config.default_host = 'www.subdomain.example.com'
내 구성 파일 중 일부에서 object_url
도우미 ( ActionView::Helpers::UrlHelper
)가 http://www.subdomain.example.com으로 시작하는 링크를 생성하도록합니다 .
나는 문서를 검색하려고 시도했지만 ActionMailer
문서와 http://api.rubyonrails.org/classes/Rails/Configuration.html 을 제외하고는 아무것도 찾지 못했습니다. . Rails :: Initializer.config의 전체 구조를 설명하는 곳이 있나요?
asset_host
URL에서 작동하지 않습니다
당신은 오버라이드 (override) 할 필요가 default_url_options
에 ApplicationController
(적어도 레일 3에서)
http://edgeguides.rubyonrails.org/action_controller_overview.html#default-url-options
class ApplicationController < ActionController::Base
def default_url_options
if Rails.env.production?
{:host => "myproduction.com"}
else
{}
end
end
end
환경 구성에서 기본 호스트를 정의하십시오.
# config/environments/staging.rb
MyApp::Application.configure do
# ...
Rails.application.routes.default_url_options[:host] = 'preview.mydomain.com'
# ...
end
그런 다음 앱 어디에서나 URL을 만들 수 있습니다.
Rails.application.routes.url_helpers.widgets_url()
또는 수업에 URL 도우미를 포함합니다.
class MyLib
include Rails.application.routes.url_helpers
def make_a_url
widgets_url
end
end
기본 호스트를 정의하지 않은 경우 옵션으로 전달해야합니다.
widgets_url host: (Rails.env.staging? ? 'preview.mydomain.com' : 'www.mydomain.com')
프로토콜과 같은 것을 지정하는 것도 유용합니다.
widgets_url protocol: 'https'
또 다른 방법은 이렇게 설정하는 것입니다
# config/production.rb
config.action_controller.default_url_options = { host: 'myproduction.com' }
모든 url_helper에 대해 :host
또는 / 및 :only_path
매개 변수를 쉽게 설정할 수 있습니다 . yours_url(params, :host => "http://example.com", :only_path => Rails.env.test?)
이렇게하면 원하는 경우가 아니면 환경에서 전역 default_url_options를 설정하지 않습니다.
내가 아는 한 *_url
헬퍼는 서버의 구성된 호스트 이름을 사용합니다. 예를 들어 Apache 설치가이 Rails 앱에 대한 요청을 수락 http://www.myapp.com/
하면 Rails가 해당 주소를 사용합니다. 이것이 *_url
개발 환경 의 메서드 http://localhost:3000
가 기본적으로 가리키는 이유 입니다.
이전 답변에서 제안한 자산 호스트는 image_tag
, stylesheet_link_tag
및 javascript_link_tag
도우미 에만 영향을 미칩니다 .
Rails의 전역 변수를 사용하여 동적 도메인 URL을 얻는 가장 간단한 방법입니다.
class ApplicationController < ActionController::Base
def base_url
$base_url = request.base_url
end
end
이 메소드를 헤더 파일에 호출하면 <% base_url %>
이제 애플리케이션의 어느 곳에서나 도메인 URL에 액세스 할 수 있습니다.
NSD의 솔루션은 내가하는 방법이지만 https에서 작동하도록 블록을 추가해야했습니다.
config.action_controller.asset_host = Proc.new { |source, request|
(request ? request.protocol : 'http://') + "www.subdomain.example.com"
}
이것이 있지만 그들이 당신이 언급하는 도우미인지별로 확신하지 못합니다.
ActionController::Base.asset_host = "assets.example.com"
http://api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html
참고 URL : https://stackoverflow.com/questions/2660172/how-do-i-set-default-host-for-url-helpers-in-rails
'programing tip' 카테고리의 다른 글
WinForm의 Dispose 메서드를 어떻게 확장합니까? (0) | 2020.12.01 |
---|---|
파생 클래스가 인스턴스화 될 때 추상 클래스 생성자가 암시 적으로 호출되지 않습니까? (0) | 2020.12.01 |
Paperclip 및 RMagick에서 기존 이미지를 새로운 스타일로 크기 조정 (0) | 2020.12.01 |
git describe가 "치명적 : 이름을 찾을 수 없음, 아무것도 설명 할 수 없음"과 함께 실패합니다. (0) | 2020.12.01 |
자바 스크립트를 통해 페이지에 CSS를 동적으로 추가 (0) | 2020.11.30 |