2
私はmatch
でこれを行う方法を知っていますが、私は本当にリソースブロックでそれをやりたいのです。ここで私は(簡体字)しているものです:Railsルーティング:リソース/メンバブロック内のアクション名をオーバーライド
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
私のルートを定義しようとしている方法が間違っているため、このエラーが発生していると思われます。
これはレーキルートの出力に正しく表示され、私は永遠に感謝しています:)私はまだrspecの障害が発生していますが、今は少なくとも私のルートが壊れていないことを知っています。ありがとう! – jaydel
あなたの歓迎です、あなたのrspecの失敗をさらに助けることができますか? – Kulgar
それはすばらしいでしょう。私は、getルートを使用して、それを:pathという名前で命名するもっと簡単な例を試してみました。ブラウザからは完全に動作します。 'xhr:get、:test_path'を実行すると、私の元の投稿と同じ基本メッセージで経路を見つけることができません。 – jaydel