[英]ruby sinatra how to redirect with regex
我正在尝试将根目录下的内容移动到/ en /目录,以使我的小服务使用多种语言。
所以,我想重定向这个网址
mysite.com/?year=2018
至
mysite.com/en/?year=2018
我的代码就像
get %r{^/(\\?year\\=\\d{4})$} do |c| redirect "/en/#{c}" end
但似乎我从未从网址中获得#{c}部分。
这是为什么? 还是有更好的方法来做到这一点?
谢谢!
您可以使用request.path
变量来获取所需的信息。
例如,
get "/something" do
puts request.path # => "/something"
redirect "/en#{request.path}"
end
但是,如果您使用查询参数(即?yeah=2000
),则必须手动将这些参数传递给重定向路由。
有点不直观,ActiveRecord中有一个辅助方法。
require 'active_record'
get "/something" do
puts params.to_param
# if params[:year] is 2000, you'll get "year=2000"
redirect "/en#{request.path}?#{params.to_param}"
end
您也可以很容易地编写自己的帮助方法:
def hash_to_param_string(hash)
hash.reduce("") do |string, (key, val)|
string << "#{key}=#{val}&"
end
end
puts hash_to_param_string({key1: "val1", key2: "val2"})
# => "key1=val1&key2=val2"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.