2014-01-19 94 views
2

我有一個路線,即mysite.com:3000/new_route,我想忽略,這是可能通過軌道,而不是服務器端?如何忽略導軌中的路線?

我讀過這可以通過Apache完成,但是,我的應用程序在Heroku上運行,並且該類型的控件無法訪問我。因此,我正在尋找另一種通過Rails來實現這一點的方法。

感謝

更新

我使用王菲有我的應用程序實時通知,對localhostfayeport 9292運行 - localhost:9292/faye,一切美好的發展模式,但在生產中應該指向mydomain.com/faye,在生產環境中沒有端口號,並且加載faye.js返回error not found

+0

_ignore_是什麼意思?你想把它路由到別的地方嗎?它應該返回404嗎?什麼? –

+0

@MichaelBerkowski當我訪問mydomain.com/blog時,它不應該由博客控制器或我的應用程序中的任何其他資源處理,/ blog是指向外部應用程序的鏈接。 – user2821877

+0

更好地說,我使用faye在我的應用程序中有實時通知,沒有localhost faye在端口9292上運行 - 'localhost:9292/faye',都在開發模式中很好,但是在生產中應該指向'mydomain.com/ faye',在生產環境中沒有端口號,並且加載faye.js返回錯誤'not found', – user2821877

回答

0

您可以在您的routes.rb文件的頂部將重定向到其他頁面。

get '/new_route', redirect: '/' 
+1

這不是一個好的選擇,不能解決問題,它帶來了無限循環。 – LPing

2

如果你在談論一個資源路線,你不希望創建:

resources :something, except: :new 

不過,我不能完全肯定,如果這是你的忽略是什麼意思。

0

當你問Rails處理路由時,已經太晚了。如果您要求rails來處理路線,它會通過返回404錯誤或500頁錯誤。

如果您希望路由被另一個應用程序處理,它將需要由您的網絡服務器(nginxapache或您正在使用的那一個)攔截。在他們的配置中,您只需將該路由重定向到其他應用程序,並將其他路徑重定向到Rails應用程序。

編輯

你有另一種選擇,就是你的請求轉發到不同的服務器。

您添加像

get 'faye/*query' => 'faye#get' 
post 'faye/*params' => 'faye#post' 

路線然後控制器

require 'faraday' 

class FayeController < ApplicationController 

    APP = 'http://mydomain.com:9292' 

    def get 
    request_page :get 
    end 

    def post 
    request_page :post 
    end 

    private 

    def request_page(method) 
    conn = Faraday.new(:url => APP) 
    query = params.delete(:query) 
    response = conn.send method, query, params 
    render text: response.body.gsub(APP, 'mydomain.com/faye') 
    end 
end 

將使用法拉第加載從其他應用程序的信息。

+0

謝謝,關於如何在heroku上配置這個任何想法? – user2821877

+0

我添加了另一個選項,更適合Heroku –