0

私の Rails アプリケーションでは、何らかの理由で、URL を目的の URL にリダイレクトする必要があります。

これが私の構成設定方法routes.rbです。

map.connect 'sample/:action/:id.:format', :controller => 'test'

  1. URL がhttp://example.com/sampleの場合、うまくリダイレ​​クトされます。Testコントローラーインデックス方式になります。

  2. URL がhttp://example.com/sample/displayname?id=10の場合、コントローラーに移動してメソッドTestを検索しdisplaynameます。明らかにそこにはなかったので、" undefined" エラー メッセージが表示されました。
    ここでは、URL が ( http://example.com/sample/displayname?id=10Test ) であっても、コントローラーのインデックス メソッドに移動するには十分です。

  3. アドレスバーにもURLマスキングをしたい。http://example.com/sample/にアクセスすると、アドレス Bar http://example.com/test にリダイレクトされます。

Rails-2 アプリケーション (Rails バージョン 2.3.9) でこれを行うにはどうすればよいですか?

4

1 に答える 1

1

まず、これを行うことはお勧めしません。これは、レールでの処理方法の慣例に反するものであり、苦痛につながる傾向があります。

(私が推奨するのは、URL を別の構造にすることです。Rails で簡単にできるようにすれば、Rails を使って楽しむことができます。そうしないと、あなたの人生は痛みと苦しみに満ちたものになります。)

しかし、本当にやりたいのであれば、レールで正規表現ルートを実行できないようです。できると思っていましたが、できる兆しが見えません。ただし、できることは...

def method_missing
  index
end

この動作をさせたいコントローラーにそれを入れてください。それはあなたが望むことをしますが、他のエラーを隠す可能性もあります. いずれにせよ、私が警告しなかったとは言わないでください。これは悪い考えのようです...

リダイレクトに関してはbefore_filter、テスト コントローラーの a がそれを行います。

before_filter :redirect_if_wrong_path

def redirect_if_wrong_path
  if request.path =~ /\/sample/
    redirect_to request.path.sub('/sample', '/test')
  end
end
于 2012-12-31T07:23:10.097 に答える