2012-05-30 34 views
7

Tôi muốn thay đổi định tuyến 'trò chơi' hiện có của mình bên trong routes.rb, nhưng vì SEO tôi cũng cần thiết lập chuyển hướng 301 cho các liên kết cũ.Ruby on Rails - chuyển tham số vào chuyển hướng 301 trong các tuyến đường.rb

định tuyến cũ của tôi:

match 'games/:permalink/:id/(:page)' => 'games#show' 

định tuyến mới:

match 'gierki/:permalink/(:page)' => 'games#show' 

Dưới đây là chuyển hướng mà tôi đã cố gắng để làm:

match 'games/:permalink/:id/(:page)' => redirect {|params| "/gierki/#{params[:permalink]}" + params[:page].nil? ? "" : "/#{params[:page]}" } 

Trên chuyển hướng không được làm việc, đây là một lỗi:

wrong number of arguments (1 for 2) 
+0

Bạn có chắc là đã xảy ra lỗi khi định tuyến không? – zsquare

+0

Tôi chắc chắn, câu trả lời dưới đây hoạt động rất tốt. – Arti

Trả lời

9

Cố gắng làm cho nó như thế này:

match 'games/:permalink/:id/(:page)' => redirect {|params,request| "/gierki/#{params[:permalink]}" + params[:page].nil? ? "" : "/#{params[:page]}" } 

Và xem nếu nó hoạt động.

+0

Đã hoạt động! Cảm ơn Maurício! – Arti

+0

Cách chuyển hướng này với 301? –

+1

@ChristianFazzini Xem http://guides.rubyonrails.org/routing.html#redirection - chuyển hướng định tuyến là 301 –

Các vấn đề liên quan