【Rails3】Rails3でconfig/routes.rbに設定されていないURLにアクセスすると

500のヘッダで public/500.html の内容が表示されますが
200のヘッダで public/hoge.htmlの内容が表示されるようにする方法を教えてください。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/03/17 08:51:40
  • 終了:2012/03/17 13:40:27

ベストアンサー

id:windofjuly No.1

うぃんど回答回数2625ベストアンサー獲得回数11492012/03/17 10:26:20

ポイント150pt

a. hogeを表示するviewを作成
b. aを表示するactionをcontrollerに追加
c. routesに「どのURLでもbを呼び出すルート」を追加

具体例
http://memo.yomukaku.net/entries/8

その他の回答(1件)

id:windofjuly No.1

うぃんど回答回数2625ベストアンサー獲得回数11492012/03/17 10:26:20ここでベストアンサー

ポイント150pt

a. hogeを表示するviewを作成
b. aを表示するactionをcontrollerに追加
c. routesに「どのURLでもbを呼び出すルート」を追加

具体例
http://memo.yomukaku.net/entries/8

id:a-kuma3 No.2

a-kuma3回答回数4365ベストアンサー獲得回数18012012/03/17 11:34:12

ポイント150pt

Rails3 で、404 や 500 の表示をカスタマイズするときのチュートリアルです。
http://ramblinglabs.com/blog/2012/01/rails-3-1-adding-custom-404-and-500-error-pages

200のヘッダで public/hoge.htmlの内容が表示されるようにする

ということですから、render の status は、status: 200 にする、ということになりますね。

質問を見てて思ったのですが、public/hoge.html を表示する action が既に存在してますか?
もし、そうであれば、細かい制御がしにくくなりますが、redirect_to を使う手もあります。

  respond_to do |format|
    format.all { redirect_to :action => "hoge"}
  end


他には、ActionController の rescue_action_in_public メソッドをオーバーライドする手もありそうですが、デフォルトの処理を理解しておく必要がありそうです。
http://d.hatena.ne.jp/Climber/20100527/1274942772

id:windofjuly

404は良いですが500の表示をカスタマイズしてしまうと、
本当のサーバーエラーなのか、
タダ単にURLが無いだけかの判別が付かなくなります

もちろん、
管理者サイドでアクセスログを見れば判る問題ではありますが、
問題の発覚も遅れる可能性がありますので、
あまり賢い選択ではないかもしれません

2012/03/17 13:23:53
id:a-kuma3

あー、言葉が足りなかったです。
リンク先のページを見て、404 を振ってる方だけ変えたらどうでしょう、というつもりでした。

回答の方も直しておいた方が良いかな。
どうもです >windofjuly さん

2012/03/17 13:37:02

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません