我们成功地将我们的rails 3.1.4应用程序部署到运行nginx的ubuntu 12.04上的suburi /。在production.rb中我们设置:
RAILS_RELATIVE_URL_ROOT="/by"
我们可以登录并进入主菜单。但是,我们在主菜单中自定义view_handler重定向的所有路由都不起作用。 view_handler的目的是记住应用程序将要路由到的下一个路径并记住如何备份(如“后退”)。这是代码(相关代码)
def view_handler
index = params[:index].to_i
url = params[:url]
if index == 1 #forword
session[:page_step] += 1
session[('page' + session[:page_step].to_s).to_sym] = url
end
#redirect to the page by url
redirect_to url
end
以下是不再起作用的link_to(404未找到错误):
<%= link_to 'Projects', "/view_handler?index=1&url=#{projects_path}" %>
显示的网址(不正确。找不到返回404)是:
http://154.248.209.181/view_handler?index=1&url=/by/projects
以下是上述(手动输入)的工作URL:
http://154.248.209.181/by/projects
对于我们来说,project_path通过view_handler返回'/ by / projects'似乎很奇怪。应该为projects_path(通过rake路由)返回'projects'。
在部署到suburi之前,部署了rails 3.1.4 app并在根目录中正常工作。
我们的设置可能有什么问题?非常感谢。
答案 0 :(得分:0)
可以通过在view_handler之前添加“/ by /”来修复损坏的路由。现在link_to看起来像:
<%= link_to 'Projects', "/by/view_handler?index=1&url=#{projects_path}" %>
还在production.rb中删除了RAILS_RELATIVE_URL_ROOT="/by"
。似乎没用。