gpt4 book ai didi

ruby-on-rails - 为什么 Rails 应用程序意外重定向而不是匹配路由?

转载 作者:行者123 更新时间:2023-12-03 15:38:55 26 4
gpt4 key购买 nike

我之前问过这个问题,并认为它已解决,但事实并非如此。上一个问题 here

我的问题是我正在尝试设置路线,以便在我输入时

localhost:3000/sites/admin

应该重定向到

localhost:3000/en/sites/admin

这是我的 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/en/en/en/en/en/en/en/sites/admin(添加 en 直到浏览器提示)。

任何想法为什么它不断添加/en?

编辑:答案很好,谢谢。你能帮我诊断一下根路由吗?

root to: redirect("#{/#{I18n.default_locale}") # handles /

我知道重定向正在寻找类似的东西

redirect("www.example.com")

所以这部分就剩下了

#{/#{I18n.default_locale}

#{ 使用的是 ruby​​s 字符串插值,对吗?我不确定那个 { 在做什么。

那么我们有

/#{I18n.default_locale}

这也是使用字符串插值并打印出I18n.default_locale的值?

希望这是有道理的,我真的很感谢你的帮助,我学到了很多东西。

编辑 2:

我从

更改了行
root to: redirect("#{/#{I18n.default_locale}") # handles /

root to: redirect("/#{I18n.default_locale}") # handles /

但我不确定这是否正确。现在我得到了错误

uninitialized constant LocaleController

我知道它的错误是从根到:“locale#root”,但我认为 locale# 将来自范围。

我会继续玩它,让你知道任何进展。

这是我的路线文件 https://gist.github.com/2332198 的新链接

最佳答案

我们又见面了,鲁沃恩。 :)

我创建了一个测试 Rails 应用程序,以下最小示例适用于我:

scope ":locale", locale: /#{I18n.available_locales.join("|")}/ do
resources :sites do
collection do
get :admin
end
end

root to: "locale#root" # handles /en/
match "*path", to: "locale#not_found" # handles /en/fake/path/whatever
end

root to: redirect("/#{I18n.default_locale}") # handles /
match '*path', to: redirect("/#{I18n.default_locale}/%{path}") # handles /not-a-locale/anything

关于ruby-on-rails - 为什么 Rails 应用程序意外重定向而不是匹配路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10052158/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com