Функциональное испытание направляющих на пользовательском маршруте

У меня есть следующие маршруты в моем приложении:

                       GET    /admin/comments(.:format)                 {:controller=>"admin/comments", :action=>"index"}
        admin_comments POST   /admin/comments(.:format)                 {:controller=>"admin/comments", :action=>"create"}
     new_admin_comment GET    /admin/comments/new(.:format)             {:controller=>"admin/comments", :action=>"new"}
                       GET    /admin/comments/:id(.:format)             {:controller=>"admin/comments", :action=>"show"}
                       PUT    /admin/comments/:id(.:format)             {:controller=>"admin/comments", :action=>"update"}
         admin_comment DELETE /admin/comments/:id(.:format)             {:controller=>"admin/comments", :action=>"destroy"}
    edit_admin_comment GET    /admin/comments/:id/edit(.:format)        {:controller=>"admin/comments", :action=>"edit"}
 admin_approve_comment        /admin/comments/approve/:id               {:module=>"admin", :controller=>"admin/comments", :action=>"approve"}
  admin_reject_comment        /admin/comments/reject/:id                {:module=>"admin", :controller=>"admin/comments", :action=>"reject"}

который объявляется как:

  namespace "admin" do

    resources :comments

    match '/comments/approve/:id' => 'comments#approve', :as => "approve_comment", :module => "admin"
    match '/comments/reject/:id' => 'comments#reject', :as => "reject_comment", :module => "admin"
  end

и функциональное испытание как это:

context "a POST to :approve" do
    setup do
      comment = Factory(:comment)
      sign_in Factory(:admin)
      post :approve, :id => comment.id 
    end

    should respond_with :success
end

Однако, когда я выполняю это, я добираюсь:

test: a POST to :approve should respond with 200. (Admin::CommentsControllerTest):
ActionController::RoutingError: No route matches {:action=>"approve", :id=>339, :controller=>"admin/comments"}

Что случилось здесь? Какую глупую ошибку я делаю?

1
задан Neil Middleton 17 June 2010 в 14:55
поделиться

2 ответа

Эти маршруты кажутся мне маршрутами участников. Итак, маршрутизация таким образом

  namespace "admin" do
    resources :comments do
      member do
        get :approve
        get :reject
      end
    end
  end

Это сгенерирует маршруты типа / admin / comments /: id / Approve. Насколько я знаю, это путь по рельсам.

2
ответ дан 2 September 2019 в 23:42
поделиться

Думаю, лучше ставить совпадение перед ресурсами. Потому что это не проверка, хорошо это или нет.

0
ответ дан 2 September 2019 в 23:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: