在nginx上将rails 3.1.4 app重新部署到/ suburi之后,某些路由无法正常工作

时间:2012-05-06 21:10:37

标签: ruby-on-rails ruby-on-rails-3.1 nginx

我们成功地将我们的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并在根目录中正常工作。

我们的设置可能有什么问题?非常感谢。

1 个答案:

答案 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"。似乎没用。