我有一个Rails服务器,其中nginx路由/
到/api
,我安装了rails_admin gem。我可以访问/api/admin
的管理面板,但管理页面上列出的所有型号都链接到/admin/:model
。我似乎无法找到一种方法来获取路由到/api/admin/:model
的链接。
我在application.rb
中设置了以下内容:
config.relative_url_root = "/api"
config.action_controller.relative_url_root = "/api"
ENV['RAILS_RELATIVE_URL_ROOT'] = "/api"
ENV['ROOT_URL'] = "/api"
但是管理页面链接没有改变。
如果我将routes.rb
更改为在命名空间下使用rails_admin,则问题不会得到解决:管理页面现在变为api/api/admin
,链接转到api/admin/:model
,但是路由是需要api/api/admin/:model
代替。
我该如何解决这个问题?
答案 0 :(得分:0)
更新:如果你真的想为整个rails应用添加/api
,这个答案可能对您有帮助,而不仅仅是rails_admin。
您application.rb
中不需要这些配置。阅读此文档:https://www.phusionpassenger.com/library/deploy/nginx/deploy/ruby/
以下是我的配置示例:
server {
listen 80 default_server;
server_name www.mydomain.com;
root /var/www/AppName/current/client/dist;
error_page 404 =200 /index.html;
location ~ ^/api(/.*|$) {
alias /var/www/AppName/current/public$1; # <-- be sure to point to 'public'!
passenger_base_uri /api;
passenger_app_root /var/www/AppName/current;
passenger_document_root /var/www/AppName/current/public;
passenger_enabled on;
passenger_app_env production;
}
}
P.S。这是error_page 404 =200 /index.html;
的解释 -
Angular 2.0 router not working on reloading the browser