2012-11-05 5 views
6

누구든지 하위 폴더의 .html.erb 파일을 라우팅하는 방법에 대해 설명해 줄 수 있습니까 ?? 이 같은 배치되는 : Ruby on Rails의 하위 폴더 경로를 어떻게 지정 하시겠습니까?

view/pages/en/index.html.erb 

및 노선

내가 route.rb

match ':lang/index', :to => 'pages/en#index' 

과 링크 코드에 대해 다음과 같은 일을하고 이것이 내가 헤더에있는

<%= link_to "Home", index_path %> 

내가 받고있는 오류는

Routing Error 
uninitialized constant Pages 

개 경로 :

enter image description here

+1

당신이 오류가? 백 트레이스 게시 – HungryCoder

+0

질문에 대한 답변을 수정하지 마십시오. 아래 답변과 동일한 내용을 게시하고 동의라고 표시하십시오. – meagar

답변

1

AFAIK,보기로 라우팅 할 수있는 방법이 없습니다. URL을 컨트롤러의 동작으로 라우팅 할 수 있습니다. 이 동작은 뷰를 렌더링하는 역할을합니다.

네임 스페이스 라우팅을 사용하여 리소스를 하위 폴더에 넣을 수 있습니다.

...

@TuteC에서 작성한 내용. 그 링크를 따라 가세요. 그가 설명한대로 언어에 구애받지 않는 언어를 얻을 수 있습니다.

3
하위 폴더에 코드 및 뷰를 구성합니다

네임 스페이스 : http://guides.rubyonrails.org/routing.html#controller-namespaces-and-routing

을 그냥 당신 같은 PagesController 뭔가를 할 수있는 경우에만 views/pages 폴더가 그런 식으로 정리해야하는 경우 :

render "#{I18n.locale}/#{action_name}" 

질문 : 왜 view/pages/en/index.html.erbview/pages/index.en.html.erb 대신에 사용 하시겠습니까? 그게 상자 밖에서 작동합니다.

+0

간단히 말해서 'es'와 같은 다른 폴더가있을 것이므로 관련 번역이있는 .html.erb 파일이 있어야합니다. 국제화 API를 사용할 수는 있지만 사양에 따라 처리해야합니다. – TheMouseMan

+0

그런 방식으로보기를 구성하는 더 빠른 방법을 추가했습니다. – TuteC

+0

다시 한번 번역 API를 사용할 필요가 없습니다. 영어로는 'en', 스페인어로는 'de'(독일어)로, 보기 -> 페이지 -> 'en' 'es' 'de'등 – TheMouseMan

2

UPDATE 이는 route.rb 작동하는 방법이다 : -

match ':lang/index', :to => 'pages#index' 

는 컨트롤러에 렌더링 : -

def index 
    render "pages/en/index" 
end 

def about 
    render "pages/#{params[:lang]}/about" 
end