1

次のルートがあります。

resources :tags do
  collection do
    get 'autocomplete', :constraints => { :format => 'js' }
  end
end

これは JS リクエスト (jQuery オートコンプリートのみ) にのみ応答するようにしたいと思います。通常の HTML リクエストの場合は、404 応答、または少なくともリダイレクトである必要があります。

代わりに、すべてのリクエストがルートによって JS 形式に変換されるため、HTML リクエストは json ハッシュを取得します。

絶対に重要というわけではありませんが、このルートへの HTML リクエストが許可されないように、このルートを明確に制限できれば、もっとうれしいです。それはどのように扱われるべきですか?

4

3 に答える 3

2

TagsController#autocompleteで、次の手順を実行します。

respond_to do |format|
  # format.html { redirect_to some_path } # enable if you want to handle html requests as well
  format.js
end
于 2012-11-03T22:12:40.210 に答える
1

あなたはこれを試すことができます

scope format: true, constraints: { format: 'html' } do get '/home' => 'home#index' end

于 2016-05-17T07:50:25.637 に答える
1

これを試すことができます(テストされていません):

get 'autocomplete', :constraints => { :format => 'js' }, :defaults => {:format => nil}

ただし、@ prusswan の回答は論理的な方法であり、より明確です。コントローラーを薄く保つことは良いことですが、読みやすくすることはより良いことです

于 2012-11-03T22:44:33.610 に答える