2012-05-07 3 views
0

프로덕션 환경에서는 레일 3.1.4 앱이 server_ip/sub 하위에 배포됩니다. suburi/by로 배포하려면 link_to를 호출 할 때/view_handler (보기 기록 기록 용)의 사용자 정의 메소드 앞에/by를 추가해야합니다. '별 /'레일 3.1 환경을 기반으로 경로 varialbe를 설정하는 방법은 무엇입니까?

그러나 개발이나 테스트 환경에서
<%= link_to 'Projects', "/by/view_handler?index=1&url=#{projects_path}" %> 

가 필요하지 않습니다 (오류가 발생할 것이다)와 LINK_TO는 같다 : 여기서 레일 제작 한 예이다

<%= link_to 'Projects', "/view_handler?index=1&url=#{projects_path}" %> 

에서 routes.rb, 우리는이 :

match '/view_handler', :to => 'application#view_handler' 

레일 환경이나 routes.rb 만하지 suburi 배포 레일 코드 자체를 변경에서 설정하는 방법이 있나요? 아니면 링크를 위해서만 레일 생산에 서브리를 추가 할 수 있습니까?

1) routes.rb에서 개발 경로의 앞에 생산 경로를 넣어 : 내가 올바르게 이해 모르겠지만, 내가 시도하는 두 가지를 생각할 수

답변

1

너무 감사합니다. Rails가 먼저 일치 시키려고 시도하고 dev/test에 있다면 실패하고 dev/test 라우트와 일치하고 성공합니다. 당신이 프로덕션에 있다면 그것은 물론 첫 번째 경로와 일치 할 것입니다.

2) 환경에 따라 그릴 경로를 결정하기 위해 Rails.env.production?을 사용하여 조건문에 두 경로를 모두 묶습니다.

if Rails.env.production? 
    match #production route 
else 
    match #dev/test route 
+0

다음과 일치하는 제작을하셨습니까 : if Rails.env.production? 일치하는 '/ by/view_handler', : to => 'application # view_handler'else '/ view_handler'와 일치, : to => 'application # view_handler'end – user938363

+0

예, . –

+0

변경 후 url은 http : // server_ip/view_handler? index = 1 & url =/by/manufacturers이며 작동하지 않았습니다. 변경 전 반환했던 것과 같습니다. 어쨌든 고마워. – user938363

3

시도 :

여기
scope(Rails.env=='production' ? '/by' : '') do 
    resources :foos 
    .... 
    end 
+0

routes.rb의 모든 것을 스코프에 넣으시겠습니까? 범위는 무엇을합니까? 감사. – user938363

+0

경로 (기본값), 컨트롤러, 모듈에 대한 옵션을 허용합니다.예를 들어, 선택적인 로케일 (예 : site.com/'en'/resources/5)을 정의하려고합니다. 어떻게 할거 니? 각 리소스 앞에 접두사를 붙이시겠습니까? scope를 사용하면 다음과 같이 할 수 있습니다 :'scope '(: locale)'do ... end'. – jdoe

+0

루트 "/"에 대한 범위가 작동하지 않았습니다. 일치하지 않습니다. 우리 시스템은 승객 (nginx)의 하위 배치를 위해 설정되었으며 스코프가 충돌 할 수 있습니다. 어쨌든 고마워. – user938363

0

우리가 깨진 라우팅 문제에 대한 사용하기로 결정하는 것이다. 이니셜 라이저에서 다음과 같이 my_constant.rb가 생성됩니다.

if Rails.env.production? 
    SUBURI = "/by" 
else 
    SUBURI = '' 
end 

각/모든 view_handler 앞에 SUBURI를 추가하십시오. 예를 들어,

<%= link_to 'Projects', "/view_handler?index=1&url=#{projects_path}" %> 

가된다 :

<%= link_to 'Projects', SUBURI + "/view_handler?index=1&url=#{projects_path}" %> 

SUBURI 각 변수를 전달 모든 URL에 추가되어야한다. 해결책은 지금까지 작동합니다.

관련 문제