2016-02-23 28 views
1

我是Ruby on Rails的新手,我有一個關於link_to的問題。 我有例如像這樣的的link_to:Ruby on Rails:link_to缺少部分URL

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

導致這樣的:

<a href="https://stackoverflow.com/users/userManagement">User...</a> 

其在開發環境中正常工作。

但在我的生產環境之前我有一個URL重寫,它指向我的rails服務器:

https://my-production-url/subdirectory

向來自上述工作得到的link_to,我需要有subdirectory也在路徑:

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

是否有可能將此配置僅用於生產?

我希望你明白我的意思,對不起我的英文不好!

感謝您的閱讀, 亞歷

回答

1

你會通過設置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,否則您將永遠不會被允許坐在涼爽的兒童桌上。

+0

Hi max! 感謝您的回答,但這沒有效果! :-( 我仍然得到沒有'sub_directory'的網址。 –

+0

它確實 - 我猜你沒有重新啓動服務器或設置正確。http://guides.rubyonrails.org/configuring.html – max