2012-11-05 9 views
6

Czy ktokolwiek może rzucić trochę światła na temat sposobu przekierowywania plików podfolderów .html.erb? która jest umieszczona tak:jak przekierować podfolder w widokach Ruby on Rails?

view/pages/en/index.html.erb 

i na trasie to robię następujące rzeczy na route.rb

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

i podania kodu łącza, mam to w nagłówku

<%= link_to "Home", index_path %> 

błąd Dostaję jest

Routing Error 
uninitialized constant Pages 

trasy:

enter image description here

+1

gdzie otrzymujesz ten błąd? opublikuj ślad zwrotny – HungryCoder

+0

Proszę nie edytować odpowiedzi na pytanie. Opublikuj tę samą treść jak odpowiedź poniżej i zaznacz ją jako zaakceptowaną. – meagar

Odpowiedz

1

AFAIK, Nie ma sposobu na przejście do widoku. Możesz skierować URL do działania kontrolera. Ta akcja jest odpowiedzialna za renderowanie widoków.

możesz użyć routingu z ustalonym identyfikatorem, aby umieścić zasoby w podfolderze.

...

co chciałem napisać już napisany przez @TuteC. Po prostu podążaj za tym linkiem i tak, jak wyjaśnił, możesz wyciągnąć z komputera określone rzeczy.

3

Przestrzenie nazw będzie organizować kodu i widoki w podfoldery: http://guides.rubyonrails.org/routing.html#controller-namespaces-and-routing

Jeśli wystarczy tylko folder views/pages zorganizowane w ten sposób, można zrobić w PagesController coś takiego:

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

Pytanie: dlaczego chcesz view/pages/en/index.html.erb zamiast view/pages/index.en.html.erb? To zadziała po wyjęciu z pudełka.

+0

po prostu dlatego, że będę mieć inny folder, taki jak "es", gdzie będzie miał pliki .html.erb z odpowiednim tłumaczeniem. Mógłbym korzystać z interfejsu API do internacjonalizacji, ale tak to musi być zrobione zgodnie ze specyfikacją! – TheMouseMan

+0

Właśnie dodałem szybszy sposób organizowania widoków w ten sposób. – TuteC

+0

Ponownie, nie potrzebuję w ogóle używać translacyjnego interfejsu API, w chwili obecnej jest to tylko statyczne trasowanie do folderów takich jak "en" (dla języka angielskiego), "es" (hiszpański), "de" (niemiecki), które są wewnątrz widoku-> strony-> 'en' 'es' 'de' itp. – TheMouseMan

2

UPDATE Jak to działa dla route.rb: - ​​

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

Czynią to na kontrolerze: -

def index 
    render "pages/en/index" 
end 

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