【发布时间】:2014-05-05 15:34:28
【问题描述】:
出于某种原因,slide_path 给了我/slides/1.1 用于 DELETE 方法而不是/albums/1/slides/1。提前感谢任何建议为什么会发生或/以及如何解决它。
我的规范失败:
1) Slide Pages Delete slide
Failure/Error: expect{page.find('.btn.btn-mini.btn-danger').click}.to change(Slide, :count).by(-1)
ActionController::RoutingError:
No route matches [DELETE] "/slides/1.1"
# ./spec/features/slides_spec.rb:78:in `block (3 levels) in <top (required)>'
# ./spec/features/slides_spec.rb:78:in `block (2 levels) in <top (required)>'
规格:
scenario "Delete slide" do
visit album_slides_url slide.album
expect{page.find('.btn.btn-mini.btn-danger').click}.to change(Slide, :count).by(-1)
end
查看:
<%= link_to t('.destroy', :default => t("helpers.links.destroy")),
slide_path(slide.album.id, slide.id),
:method => :delete,
:class => 'btn btn-mini btn-danger',
:remote => true %>
rake 路线:
slide GET /slides/:id(.:format) slides#show
PATCH /slides/:id(.:format) slides#update
PUT /slides/:id(.:format) slides#update
DELETE /albums/:album_id/slides/:ids(.:format) slides#destroy # this is the one I expect to get
PATCH /albums/:album_id/slides/:ids/dest_album/:dest_album_id(.:format) slides#move
PUT /albums/:album_id/slides/:ids/dest_album/:dest_album_id(.:format) slides#move
routes.rb:
resources :albums, except: :show do
resources :slides, shallow: true, except: [:destroy, :patch, :put]
match 'slides/:ids', to: 'slides#destroy', via: :delete
match 'slides/:ids/dest_album/:dest_album_id', to: 'slides#move', via: :patch
match 'slides/:ids/dest_album/:dest_album_id', to: 'slides#move', via: :put
end
【问题讨论】:
标签: ruby-on-rails routes restful-url