これを行う方法は知っていますmatch
が、リソースブロックで実際に行いたいです。これが私が持っているものです(簡略化):
resources :stories do
member do
'put' collaborator
'delete' collaborator
end
end
URL で同じアクション名を許可する方法を探していますが、コントローラーには異なるエントリ ポイントがあります。現時点では、コントローラーを持っています:
# PUT /stories/1/collaborator.json
def add_collaborator
...
end
# DELETE /stories/1/collaborator.json
def remove_collaborator
...
end
だから私はこれを試しました:
resources :stories do
member do
'put' collaborator, :action => 'add_collaborator'
'delete' collaborator, :action => 'remove_collaborator'
end
end
しかし、rspec単体テストを書いたとき、これはうまくいかなかったようです:
describe "PUT /stories/1/collaborator.json" do
it "adds a collaborator to the story" do
story = FactoryGirl.create :story
collaborator = FactoryGirl.create :user
xhr :put, :collaborator, :id => story.id, :collaborator_id => collaborator.id
# shoulds go here...
end
終わり
次のエラーが表示されます。
Finished in 0.23594 seconds
5 examples, 1 failure, 1 pending
Failed examples:
rspec ./spec/controllers/stories_controller_spec.rb:78 # StoriesController PUT
/stories/1/collaborator.json adds a collaborator to the story
このエラーは、ルートを定義しようとしている方法が間違っているためだと思います...何か提案はありますか?