2010-03-25 29 views
41

Có thể thực hiện chuyển hướng trong tệp tuyến đường của ứng dụng Rails không?Có thể tạo tuyến chuyển hướng này trong Rails không?

Cụ thể, tôi muốn chuyển tiếp /j/e-/javascripts/embed.js

Ngay bây giờ cách duy nhất tôi có thể nghĩ đến để làm điều đó là để tạo ra một bộ điều khiển j với một phương pháp e đó chuyển hướng đến đó.

Trả lời

6

Giả sử đường ray phiên bản trước 3.

Bạn có thể tạo mới RedirectController hoặc gài một chức năng duy nhất đi trong một bộ điều khiển hiện có, để làm một cái gì đó như sau:

map.js_embed '/j/e', 
    :controller => :redirect_controller, 
    :action => :some_function, 
    :path => "embed" 

Sau đó, chức năng của bạn sẽ làm điều này:

def some_function 
    if params[:path] 
    redirect_to "/javascripts/#{params[:path]}.js" 
    end 
end 

hoặc một cái gì đó cho hiệu ứng đó.

151

Với Rails 3, bạn có thể chuyển hướng bên trong tệp routes.rb.

match "/posts/github" => redirect("http://github.com/rails.atom") 

Trong Rails 4: (nhờ @dennis)

get '/stories', to: redirect('/posts') 
+7

Xem [http://guides.rubyonrails.org/routing.html#redirection](http://guides.rubyonrails.org /routing.html#redirection) – user664833

+7

Cảm ơn! Tôi cũng cần bao gồm một id trong chuyển hướng của mình. Đối với những người cần nó /: id/trong trận đấu có thể được tham chiếu là /% {id}/trong url được chuyển hướng ... –

+6

Trong Rails 4, 'get '/ stories', tới: redirect ('/ posts') ', như đã thấy trong [Hướng dẫn RoR] (http://edgeguides.rubyonrails.org/routing.html#redirection). Lưu ý rằng bạn không cần tạo chế độ xem vì bạn đang chuyển hướng ở cấp tuyến. – Dennis

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