ユーザーがカスタムURLを設定し、私たちの "content_pages"コントローラにルーティングするCMSスタイルのアプリケーションがあります。ワイルドカードルートのフォーマット制約
これをサポートするために、3つのワイルドカードルートが定義されています。
これらのワイルドカードは、フォーマットがhtml、json、xmlなどのリクエストにのみ応答するように制約しています。これは、欠けているfavicon.icoが一連のクエリとWebリクエストをもたらすという問題から生まれます。なぜなら、それはcontent_pagesコントローラにルーティングされ、次に404にルーティングされるからです。
これまで私がこれまで持っていたことはありますが、制約は単に機能しません。 (ファビコンまだルート)
get "/:id/edit", to: "content_pages#edit", :constraints => {:id => /.*/, :format => "[html|xml|json]"}, as: :edit_content_page
put "/:id", to: "content_pages#update", :constraints => {:id => /.*/, :format => "[html|xml|json]"}, as: :content_page
get "/:id", to: "content_pages#show", :constraints => {:id => /.*/, :format => "[html|xml|json]"}, as: :content_page
私は、カスタムの制約クラスにこれを入れてみましたが、その後ここに含まアレントcontent_pages上のアクションは、(のような/ content_pagesどのインデックスへのルート)レンダリングされません。
これは、他のアクションを結びつける以前のリソースステートメントです。
resources :content_pages, except: [:get, :edit, :update] do
collection do
get :get_url
end
end
私がこの制約をどのようにすることができるかについての考えは、他の拘束されていない他のアクションを破ることなく適用されますか?
あなたの ':id'制約がおそらくidの一部としてフォーマットを摂っているので、:format制約は評価されていません。あなたは '/.*?/'のようなことをして正規表現を怠惰にしてフォーマットを食べることはできませんが、 '.ico'ファイルはまだ許可されます。本当に答えはありませんが、うまくいけばあなたに役立つ情報があります。 –