【问题标题】:How do I ignore a route in rails?如何忽略rails中的路线?
【发布时间】:2014-01-19 20:03:17
【问题描述】:

我有一条我想忽略的路由,即 mysite.com:3000/new_route,这可以通过 rails 而不是服务器端来实现吗?

我了解到这可以通过 apache 完成,但是,我的应用程序在 Heroku 上运行,并且我无法访问这种类型的控件。因此,我正在寻找另一种通过 Rails 执行此操作的方法。

谢谢

更新

我正在使用 faye 在我的应用程序中进行实时通知,在 localhost faye 上运行 port 9292 - localhost:9292/faye,在开发模式下一切正常,但在生产中它应该指向 mydomain.com/faye,那里生产环境中没有端口号,加载faye.js返回error not found

【问题讨论】:

  • 忽略是什么意思?你想让它路由到其他地方吗?它应该返回 404 吗?什么?
  • @MichaelBerkowski 当我访问 mydomain.com/blog 时,它不应由博客控制器或我的应用程序中的任何其他资源处理,/blog 是指向外部应用程序的链接。
  • 更好地说,我正在使用 faye 在我的应用程序中进行实时通知,没有 localhost faye 在端口 9292 - localhost:9292/faye 上运行,在开发模式下一切正常,但在生产中应该指向 @987654329 @,生产环境没有端口号,加载faye.js返回错误not found
  • 请使用该信息更新您的问题。
  • 更新,原帖

标签: ruby-on-rails ruby routing ruby-on-rails-4


【解决方案1】:

如果您谈论的是您不想被创建的资源路线:

resources :something, except: :new

但是,我不确定这是否是您所说的忽略。

【讨论】:

    【解决方案2】:

    您可以在 routes.rb 文件的顶部定义一个路由,该路由将重定向到其他页面。

    get '/new_route', redirect: '/'
    

    【讨论】:

    • 这不是一个好的选择,不能解决问题,它会导致无限循环。
    【解决方案3】:

    当您要求 Rails 处理路由时,已经太晚了。如果您要求 rails 处理路线,它会通过返回 404 of 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
    

    它将使用 Faraday 从您的其他应用程序加载信息。

    【讨论】:

    • 谢谢,您知道如何在 heroku 上进行配置吗?
    • 我添加了另一个选项,更适合Heroku
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-16
    • 2020-09-27
    • 2019-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多