【问题标题】:Remap root for rails app重新映射 Rails 应用程序的根目录
【发布时间】:2016-07-08 22:25:42
【问题描述】:

我在内部服务器上安装了一个 Ruby on Rails 应用程序,需要应用程序根目录看起来像一个目录。

校园 IT 已安排将所有定向到 http://myinstitution.edu/mydepartment/servicename 的请求路由到 http://myinternalserver.edu/

这会导致错误:没有路由匹配 [GET] "/mydepartment/servicename"

我试过修改routes.rb:

match "/mydepartment/servicename", to: "home#index", via: [:get, :post]

但这会导致错误:undefined local variable or method `root_url' for ...

我加了

get '/mydepartment/servicename' => redirect("/")

但这会导致所有请求都被重定向到http://myinstitution.edu/# 而不是将请求发送到我的服务器的目录

如何使它看起来像我的实际服务位于目录库中?我以前没有使用过RoR。谢谢。

在我弄乱它之前的原始 routes.rb : 这是我弄乱它之前的原件:

Rails.application.routes.draw do
  root to: "catalog#index"
  blacklight_for :catalog
  Blacklight::Marc.add_routes(self)
  devise_for :users
end

【问题讨论】:

  • 你能发布你的 routes.rb 吗?
  • 添加到问题之前的原始 routes.rb
  • 您当前的默认主机是什么? myinstitution.edu我猜?

标签: ruby-on-rails routes url-routing


【解决方案1】:

在您的routes.rb 中,您可以使用范围来更轻松地定义路线:

Rails.application.routes.draw do
  root to: "catalog#index"
  blacklight_for :catalog
  Blacklight::Marc.add_routes(self)
  devise_for :users

  scope "/mydepartment/servicename" do
    match '/', to: "home#index", via: [:get, :post]
    # ... more routes
  end
end

你仍然需要你的root to: 来指向一个有效的控制器和动作。您收到的错误 undefined local variable or method 'root_url' for ... 是由于您的 routes.rb 中缺少此子句。

由于您使用的是 Devise,它的路线也需要调整。请参阅How To: Change the default sign_in and sign_out routes 了解更多信息。

【讨论】:

    猜你喜欢
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多