3

Rails 2.3のルートで悪いフォーマットをどのように処理しますか?たとえば、htmlまたはjsonリクエストを処理したいが、ユーザーが読み取り可能なエラーを公表できるようにしながら、それをどのように制限するかというアクションがあるとします。次のスニペットは開始点を示しています。

respond_to do |format|
  format.html # render the default
  format.json { do something appropriate }
  format.all  ?
end

問題は?の代わりに何を置くかです、私は試しました:

  format.all :text => "That's a bad format.", :status => 406

ステータスコードが適切に設定されている間、テキストはレンダリングされません(少なくとも、私が受け取っているcomのような形式では)。

1つの可能性は、2つの形式のみが受け入れられるようにルートファイルを変更することですが、それはルートの爆発的な増加につながります。(私は4つの受け入れ可能なフォーマットを持っています。)使用のアイデア

map.connect '/xyz.:format', :action => ..., :controller => ..., :format => '/html|json/'

良さそうに聞こえますが、機能しません。xyz.comhtmlのようなものと一致します。私はイライラしていて、何か足りないものがあることを望んでいます。

4

1 に答える 1

2

私は間違っているかもしれませんが、あなたのformat.all呼び出しについては、ファイルを返すことができると思います。リターンタイプも定義する次のようなものです。

format.all { render :file => File.join(Rails.public_path, '406.html'), :status => 406, :content_type => 'text/html' }

そして、「それは悪いフォーマットです」というテキストを含む「406.html」ファイルをパブリックディレクトリに置くだけです。初期化。

于 2011-05-06T00:00:27.037 に答える