3

/searchこれらすべてのリソースにエンドポイントを一度に追加するにはどうすればよいですか?

MyCoolApp::Application.routes.draw do

  resources :posts, only [:index, :show, :create] do
    collection { get :search }
  end

  resources :authors, only [:index, :show] do
    collection { get :search }
  end

  resources :comments, only: [:index, :show] do
    collection { get :search }
  end

  resources :categories, only: [:index, :show] do
    collection { get :search }
  end

  resources :tags, only: [:index] do
    collection { get :search }
  end
end

この回答は近いですが、到達リソースのアクションを指定できるようにする必要があります。より良い方法で検索ルートを挿入するより良い方法はありますか?

%w(one two three four etc).each do |r|
  resources r do
    collection do
      post 'common_action'
    end
  end
end

このようなもの?

resources :posts, only [:index, :show, :create, :search]
4

1 に答える 1

7

あなたがこの質問ruby-on-rails-3にタグを付けたことは知っていますが、将来これに遭遇した人のために Rails 4 ソリューションを提供します。

Rails 4 ではルーティングの問題が導入されました

concern :searchable do
  collection do
    get :search
  end
end

resources :posts, only [:index, :show, :create], concerns: [:searchable]
resources :authors, only [:index, :show], concerns: [:searchable]
resources :comments, only: [:index, :show], concerns: [:searchable]
resources :categories, only: [:index, :show], concerns: [:searchable]
resources :tags, only: [:index], concerns: [:searchable]
于 2013-09-06T18:47:22.657 に答える