15

私はいくつかのアクションを持つコントローラを持っています:

class TestsController < ApplicationController
   def find
   end

   def break
   end

   def turn
   end
end

routes.rb次のようにファイルに追加すると:

resources :tests

タスクを実行するとrake routes、次の余分なラウンドが表示されます。

    tests GET    /tests(.:format)          tests#index
          POST   /tests(.:format)          tests#create
 new_test GET    /tests/new(.:format)      tests#new
edit_test GET    /tests/:id/edit(.:format) tests#edit
     test GET    /tests/:id(.:format)      tests#show
          PUT    /tests/:id(.:format)      tests#update
          DELETE /tests/:id(.:format)      tests#destroy

明らかに、私のコントローラーには上記のアクションがありません。では、これらのルートを生成/期待しないようにRailsに指示するにはどうすればよいでしょうか?

4

3 に答える 3

11

次のようにルーティングするアクションを指定できます。

resources :tests, except: [:new, :create, :edit, :update, :destroy] do 
  collection do 
    get 'find'
    get 'break'
    get 'turn'
  end 
end
于 2013-07-04T08:33:21.793 に答える
1

安らかなルートが必要ない場合は、を使用しないでくださいresources。各パスとアクションを個別に指定してください。

get '/tests/find' => 'tests#find'
post '/tests/break' => 'tests#break'
post '/tests/turn' => 'tests#turn'

そして、次のようにパラメーターを指定します。

post '/tests/add/:id' => 'tests#add'
于 2013-07-04T08:44:32.120 に答える