0

nginx を実行している ubuntu 12.04 で、レール 3.1.4 アプリを suburi /by に正常にデプロイしました。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}" %>

表示される URL (正しくありません。リターン 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 には 'projects' のみを返す必要があります (rake ルートによる)。

suburi にデプロイする前に、rails 3.1.4 アプリがデプロイされ、ルート ディレクトリで正常に動作していました。

セットアップのどこが悪いのでしょうか? 本当にありがとう。

4

1 に答える 1

0

壊れたルートは、view_handler の前に「/by/」を追加することで修正できます。link_to は次のようになります。

<%= link_to 'Projects', "/by/view_handler?index=1&url=#{projects_path}" %>

production.rb からもRAILS_RELATIVE_URL_ROOT="/by"削除されました。駄目そうです。

于 2012-05-07T15:17:43.523 に答える