在Rails中,将带有“重命名的参数”的旧网址重定向到新网址

时间:2014-01-22 07:39:36

标签: ruby-on-rails ruby redirect routes

我的应用程序旧网址是(在php中)

www.abc.com/athlete/?country=2

现在新的网址是(在Rails中):

www.asdf.com/athletes/?c=2

现在,我需要将旧网址重定向(google抓取)到新网址。通过config/routes.rb 或通过重定向控制器使用重定向一个垂直动作

def redirect_to_index
   redirect_to :action => :index, :c => params[:country], :status => 301
end

但问题是有许多旧网址没有参数,即没有country。但是在reidrecting我总是?c=

我不想使用粗略的代码,如

def redirect_to_index
   if params[:country]
     redirect_to :action => :index, :c => params[:country], :status => 301
   else
    redirect_to :action => :index, :status => 301
   end
end

有更好的解决方案吗?

1 个答案:

答案 0 :(得分:2)

你可以这样做:

new_params = {
  :c => params[:country],
  :x => params[:something_else]
}.reject{|k,v| v.nil? }

redirect_to ({ :action => :index, :status => 301 }.merge(new_params))