【问题标题】:routing scope (":locale") error路由范围 (":locale") 错误
【发布时间】:2011-09-17 14:42:26
【问题描述】:

Rails 3.0.9

我根据http://guides.rubyonrails.org/i18n.html#setting-the-locale-from-the-url-params配置了路由

但似乎那里的信息不完整。我的路线.rb:

Myapp::Application.routes.draw do
  scope "(:locale)", :locale => /ru|en/ do
    resources :pages, :only => [:show]
    ...
  end
  match '/:locale' => 'index#index', :locale => /ru|en/
  root :to => 'index#index'
end

正如上面链接中的文档所说,路由应该是 /ru/... 和 /en/... 那么,我怎样才能从路由中获取 :locale 的值? params[:locale] 为空。

谢谢!

【问题讨论】:

  • 我刚试过,它有效。尝试将 locale: "<%= params[:locale] %>"<br/> 之类的内容添加到您的 application.html.erb 并尝试不同的 URL。 http://your.domain/ru 应该让您在每一页上都显示“语言环境:“ru”。您尝试了哪些网址?
  • my.domain/ru, my.domain/en。在这两个 params[:locale] 中都是空的。我想知道为什么,谷歌不知道这样的问题。
  • 可能是因为它有效 :O) 你一定错过了其他东西,你上面引用的路线很好。正如 khustochka 所说,查看您尝试访问 params[:locale] 的代码(如控制器)可能有助于找到问题。

标签: ruby-on-rails ruby-on-rails-3


【解决方案1】:

对不起,一定是评论,不是答案,但我没有评论的权利。

当您访问http://localhost:8080/http://localhost:8080/ru 时,您是否感到params[:locale] 为空?

当然,如果在点击//pages/1 时必须为空,但在点击/ru/en/ru/pages/1 等时不应为空

【讨论】:

  • 在所有情况下都是空的,/、/en、/ru/、/en/pages/o_respublike。我在这里找不到类似情况的主题。
  • 查看完整的 routes.rb 和控制器代码可能有助于回答。特别是如果您有一些自定义路由(可以覆盖后面的路由,例如,如果您有类似 match '/:id' => 'pages#show' 的东西)或控制器中有一些过滤器
【解决方案2】:

问题出在 open_id_authentication 插件中。删除它有帮助。

【讨论】:

    猜你喜欢
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    • 2011-10-01
    • 2016-04-10
    • 2022-01-17
    • 2015-10-31
    相关资源
    最近更新 更多