나는이 질문을 더 일찍 요구했고 그것이 고쳐 졌다고 생각했다. 그러나 그것은 아니다. 이전 질문 here 내 문제는 내가 경로를 설정하기 위해 노력하고있다경로가 일치하지 않고 레일 앱이 예기치 않게 리디렉션되는 이유는 무엇입니까?
그래서 내가
에 입력 할 때로컬 호스트 : 3000/사이트
그것은
로컬 호스트로 리디렉션해야/관리자 : 3000/EN/사이트/관리
여기 내 routes.rb 파일입니다
scope ":locale", locale: /#{I18n.available_locales.join("|")}/ do
get "log_out" => "sessions#destroy", as: "log_out"
get "log_in" => "sessions#new", as: "log_in"
resources :sites, except: [:new, :edit, :index, :show, :update, :destroy, :create] do
collection do
get :home
get :about_us
get :faq
get :discounts
get :services
get :contact_us
get :admin
get :posts
end
end
resources :users
resources :abouts
resources :sessions
resources :coupons
resources :monthly_posts
resources :reviews
resources :categories do
collection { post :sort }
resources :children, :controller => :categories, :only => [:index, :new, :create, :new_subcategory]
end
resources :products do
member do
put :move_up
put :move_down
end
end
resources :faqs do
collection { post :sort }
end
root :to => 'sites#home'
match "/savesort" => 'sites#savesort'
end
match '', to: redirect("/#{I18n.default_locale}")
match '*path', to: redirect("/#{I18n.default_locale}/%{path}")
지금 당장은/en/en/en/ko/ko/ko/ko/ko/sites/admin으로 리디렉션됩니다 (브라우저가 불평 할 때까지 추가).
덧셈을 계속하는 이유는 무엇입니까?
편집 : 답은 정말 감사합니다. 루트 루트를 진단하도록 도와 줄 수 있습니까?
root to: redirect("#{/#{I18n.default_locale}") # handles/
내가
redirect("www.example.com")
같은 뭔가를 찾고있다 리디렉션을 알고는 그래서이 부분
#{/#{I18n.default_locale}
# {오른쪽 rubys 문자열 보간을 사용을 남긴다? 나는 그것이 무엇을하고 있는지 확실하지 않다.
그래서 우리는 또한 문자열 보간을 사용하고 I18n.default_locale의 값을 출력하는
/#{I18n.default_locale}
있나요?
희망적으로, 나는 도움을 정말로 정말로 바란다. 나는 많이 배우고있다.
편집 2 :
나는
root to: redirect("/#{I18n.default_locale}") # handles/
에
root to: redirect("#{/#{I18n.default_locale}") # handles/
에서 라인을 변경하지만 난 그게 잘 있는지 확실하지 않습니다. 지금은 오류
uninitialized constant LocaleController
내가가 루트에서 오류가 발생 것을 알고 얻고있다 "로케일 # 루트를",하지만 난 로케일 번호가 범위에서 올 거라 생각 했어요.
나는 계속해서 게임을하고 진행 상황을 알려줄 것입니다.내 경로가 https://gist.github.com/2332198
좋은 답변과 노력, +1 – apneadiving
그리고 우리가 다시 만난 것을 기쁘게 생각합니다 :) 대답은 내가 기대할 수있는 것 이상입니다. 나는 당신이 루트를 가질 수 있다는 것을 몰랐다 : 당신의 스코프와 그것의 바깥쪽에, 나는 로케일 # 루트를 그런 식으로 호출 할 수 있다는 것을 모르고 있었다. 나는 아직도 배우고있다. 루트 : 리다이렉트 나는 꽤 확신 할 수 없으므로 시간이 있다면 질문에 편집을 게시했다. 감사합니다. 다시 – ruevaughn
'locale # root'는'controller # action'의 약식이므로 LocaleController의'root' 메소드가 될 것입니다. 나는 그것을 단지 자리 표시 자로 사용했다. 앱에서 의미가있는 것으로 바꾸면됩니다. –