0

デフォルトルートに次の2行があります

  match '/:controller/:action'
  match '/*path' , :to => 'map#catch_all'

したがって、問題は、ユーザーが有効なコントローラーと/user/aaaaのような無効なアクション名をヒットすると、ルートが上記のルートの最初の行に引っかかるため、「不明なアクション」の例外が発生することです。上記の行の順序も変更できません。

何か助けて?? すべてのコメントをお待ちしております。前もって感謝します。

4

1 に答える 1

3

本番環境では、明示的に許可されていないアクションへのアクセスをユーザーに許可しないでください。利用可能なすべてのアクションを列挙するか、リソースを使用して安静なパスを自動的に許可する必要があります。これで問題は解決します。

また、一致しない URL が入力された場合、404 メッセージがユーザーに表示されます。これは、これを処理する正しい方法です。

更新: ApplicationController では、メソッドを実装してmethod_missing(method, *args)、ワイルドカード ルートから発生する可能性があるすべての存在しないアクション コールを処理できます。

def method_missing(method, *args)
  # handle Unknown Action
end

ただし、これは存在しないすべてのメソッド呼び出しをキャッチすることに注意してください。これにより、タイプミスなどのデバッグで問題が発生する可能性があります。

于 2012-07-02T14:16:22.633 に答える