Ruby on Rails:link_to缺少URL的一部分

时间:2016-02-23 13:38:52

标签: ruby-on-rails routing

我刚接触ruby on rails并且我有一个关于link_to的问题。 我有一个像这样的link_to:

<%= link_to 'User...', {:controller => 'users', :action => 'userManagement'} %>

结果如下:

<a href="/users/userManagement">User...</a>

在开发环境中工作正常。

但是在我的生产环境中,我之前有一个URL重写,它指向我的rails服务器:

https://my-production-url/subdirectory

要让link_to从上面工作,我需要在路径中也有subdirectory

<a href="subdirectory/users/userManagement">User...</a>

是否可以将其配置为仅用于生产?

我希望你明白我的意思,并抱歉我的英语不好!

感谢阅读, 亚历

1 个答案:

答案 0 :(得分:0)

您可以通过设置action_controller.relative_url_root来完成此操作。

Rails.application.configure do
  # ...
  config.action_controller.relative_url_root = '/sub_directory'
end

您可以将其放在/config/environments/production.rb

在旁注中,您的路线非常特殊。通常,管理部分的路由如下所示:

Rails.application.routes.draw do
  namespace :admin, module: :admin do
    resources :users
  end
end

这将创建以下路由($ rake routes):

         Prefix Verb   URI Pattern                     Controller#Action
    admin_users GET    /admin/users(.:format)          admin/users#index
                POST   /admin/users(.:format)          admin/users#create
 new_admin_user GET    /admin/users/new(.:format)      admin/users#new
edit_admin_user GET    /admin/users/:id/edit(.:format) admin/users#edit
     admin_user GET    /admin/users/:id(.:format)      admin/users#show
                PATCH  /admin/users/:id(.:format)      admin/users#update
                PUT    /admin/users/:id(.:format)      admin/users#update
                DELETE /admin/users/:id(.:format)      admin/users#destroy

考虑资源 - 而不是页面。并且不要在您的路线或方法名称中使用camelCase,否则您将永远不会被允许坐在酷儿童餐桌旁。