RoutingError в Rspec - PullRequest
       10

RoutingError в Rspec

2 голосов
/ 25 июня 2011

Я продолжаю сталкиваться с этой ошибкой, чтобы запрос GET показывал действие.

  1) ShopController GET 'show' should be successful
     Failure/Error: get 'show', :id=>@shop.user.nickname
     ActionController::RoutingError:
       No route matches {:id=>"picardo", :controller=>"shop", :action=>"show"}
     # ./spec/controllers/shop_controller_spec.rb:8:in `block (3 levels) in <top (required)>'

Мои маршруты выглядят следующим образом.

  #routes.rb
  resources :shop, :only=>[:show]

Это спецификация контроллера:

  #shop_controller_spec.rb
  before(:each) do
    @shop = Fabricate(:shop)
  end
  describe "GET 'show'" do
    it "should be successful" do
      get 'show', :id=>@shop.user.nickname
      response.should be_success
    end
  end

И контроллер:

  def show
    @user = User.find(:first,:conditions=>{:nickname=>params[:id]})
    @shop = @user.shop
  end

1 Ответ

0 голосов
/ 13 мая 2012

Вы должны следовать некоторым правилам рельсов.Если у вас есть отдельный ресурс, вы должны написать resource :shop, а если у вас есть множественные ресурсы, вы должны написать resources :shops.Вы можете выполнить команду rake routes, чтобы увидеть разницу.

Вы написали resources :shop и запрос отправляет ShopController, которого нет в вашем приложении, потому что я уверен, что контроллер назван ShopsController.Потому что другое правило рельсов - именовать контроллеры во множественном числе и модели в единственном числе.

Или просто написать имя контроллера в маршрутах: resources :shop, :controller => 'shops'

...