Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 路由范围(“区域设置”)错误_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 路由范围(“区域设置”)错误

Ruby on rails 路由范围(“区域设置”)错误,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,Rails 3.0.9 我根据 但那里的信息似乎并不完整。My routes.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 :t

Rails 3.0.9

我根据

但那里的信息似乎并不完整。My routes.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
正如上面的docbylink所说,路由应该是/ru/。。。和/恩/。。。那么,如何从路由中获取:locale的值呢?params[:locale]为空


谢谢

对不起,这一定是一个评论,不是回答,但我无权评论

您在访问时是否得到空的
params[:locale]
,比如说,还是


当然,当点击
/
/pages/1
时,if必须为空,但当点击
/ru
时,if不应为空,
/en
/ru/pages/1

等问题出现在open\u id\u身份验证插件中。移除它很有帮助。

我刚刚尝试过,效果很好。尝试向
application.html.erb
添加类似于
locale:“
的内容,然后尝试不同的URL<代码>http://your.domain/ru
应该在每页上显示“locale:”ru“。你在尝试什么URL?my.domain/ru,my.domain/en。在两个参数中,[:locale]都为空。我想知道为什么,谷歌不知道这样的问题。可能是因为它是有效的:O)你肯定错过了其他东西,你上面引用的路线是好的。正如khustochka所说,在试图访问
参数[:locale]
的地方查看代码,就像控制器一样,有助于发现问题。在所有情况下,/,/en,/ru/,/en/pages/o_respublike都是空的。我在这里找不到类似情况的主题。查看完整的routes.rb和控制器代码可能有助于回答这个问题。特别是如果您有一些自定义路由(可以覆盖后面的路由,例如,如果您在控制器中有类似
match'/:id'=>“pages#show'
)或某些筛选器的内容,则更是如此