在我的旧Rails 2.3应用程序中,我有类似的东西:
link_to 'Portuguese', url_for(:overwrite_params => { :lang => 'pt' })
将网格格式化为:
... / PT
现在我已升级到Rails 3.0 :overwrite_params
不再起作用,他们说可以使用params.merge
来获得相同的结果。
这是真的,我登陆的页面是相同的,但
link_to 'Portuguese', params.merge(:lang => 'pt')
给我的URL类型:
... /?LANG = PT
我如何保持与以前相同的网址?
答案 0 :(得分:0)
你可以使用匹配声明。在routes.rb文件中,您需要提及类似
的内容get "sign_up/:lang" => "users#new"
我在控制台中尝试了这个
1.9.3-p429 :001 > include Rails.application.routes.url_helpers
1.9.3-p429 :011 > url_for(:only_path => true, :controller => 'users', :action = 'new' , :lang=>'pt')
=> "/sign_up/pt"
以这种方式,您将参数lang传递为'/ pt'而不是'/?lang = pt'
答案 1 :(得分:0)
我有这种看起来很可怕的解决方法:
定义匹配路线后
match '(/:lang)', to: 'home#index', as: :home
我创建了它的链接:
link_to "Portuguese", URI(request.referer).path + "pt"