我試圖爲我的'foo'控制器設置一個成員路由,它被命名爲'bar',因此它應該只響應發佈請求。但是,我注意到在我的RSpec測試中它響應所有請求類型(GET,POST,PUT,DELETE)。Rails「POST」成員路由響應所有請求類型
我的印象是,定義路線的話,會限制它使得它將只響應POST請求:
resources :foo do
member do
post 'bar'
do
end
這似乎是由事實進一步證實,當我運行rake routes
它只示出了 '酒吧' 路線如下所示:
bar_foo POST /foo/:id/bar(.:format) {:action=>"bar", :controller=>"foo"}
然而,從RSPEC,下面的測試失敗(意味着控制器處理成功請求)GET,PUT,DELETE &:
describe FooController do
describe "GET bar" do
it "should not be successful" do
foo = FactoryGirl.create(:foo)
get :bar, :id => foo.id
response.should_not be_ok
end
end
end
我在這裏錯過了些什麼?如何限制我的「酒吧」成員路線只回應「發佈」請求。
編輯:
這似乎是一個問題與任何RSpec的2.0或ActionController::TestCase,因爲我碰到下面的錯誤,當我試着打/富/:ID /條我斷絕與任何東西,但POST :
Routing Error
No route matches [GET] "/foo/1/bar"
「把response.inspect」並檢查輸出。 – 2012-02-01 22:49:28
答案是200,這就是'FooController – plainjimbo 2012-02-01 22:56:58
'爲了驗證你的理智,我寫了類似的測試,依靠路由拒絕非POST等,並且已經有效,'bar'動作返回成功。這是正確的策略,必須是一些「平凡的細節」 – Woahdae 2012-02-01 23:04:23