Ошибка маршрутизации при запуске спецификации контроллера (rspec) - PullRequest
2 голосов
/ 04 марта 2012

Я чувствую, что у меня есть все, что мне нужно, в моем route.rb, моем контроллере и спецификации контроллера, но по какой-то причине я все еще получаю ошибку маршрутизации (ActionController :: RoutingError).Вот мой контроллер:

class HunchController < ActionController::Base
  protect_from_forgery

  def results
    auth_token_key = params[:auth_token_key]
    user_id = params[:user_id]
    @user = User.create!
    @user.auth_token = @user.get_auth_token(auth_token_key, user_id)
    @recommended_books = @user.get_recommended_books(@user.auth_token)
  end
end

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

require 'spec_helper'

describe HunchController do
  describe "POST 'results'" do
    before do
      @params = {
        :auth_token_key => "my auth token",
        :user_id => "my user id"
      }
    end

    it "succeeds" do
      post :results, @params
      response.should be_success
    end
  end
end

А вот мои маршруты.rb:

MyApplicationName::Application.routes.draw do
  root :to => 'hunch#index'

  resources :users
  post 'hunch/results' => "hunch#results"
  match '/results' => 'hunch#results'
end

РЕДАКТИРОВАТЬ: Вот мойВывод Rake Routes:

         root        /                         {:controller=>"pages", :action=>"index"}
hunch_results POST   /hunch/results(.:format)  {:controller=>"hunch", :action=>"results"}
      results        /results(.:format)        {:controller=>"hunch", :action=>"results"}
        users GET    /users(.:format)          {:action=>"index", :controller=>"users"}
              POST   /users(.:format)          {:action=>"create", :controller=>"users"}
     new_user GET    /users/new(.:format)      {:action=>"new", :controller=>"users"}
    edit_user GET    /users/:id/edit(.:format) {:action=>"edit", :controller=>"users"}
         user GET    /users/:id(.:format)      {:action=>"show", :controller=>"users"}
              PUT    /users/:id(.:format)      {:action=>"update", :controller=>"users"}

РЕДАКТИРОВАТЬ # 2: я получаю эту ошибку с моими пользователями # Показать тест тоже.Вот фактическая ошибка:

  1) UsersController#show succeeds
     Failure/Error: get :show
     ActionController::RoutingError:
       No route matches {:controller=>"users", :action=>"show"}
     # ./spec/controllers/users_controller_spec.rb:13:in `block (3 levels) in <top (required)>'

1 Ответ

0 голосов
/ 04 апреля 2012

Хорошо, у меня возникла та же проблема, когда gem trip был обновлен до последней версии.И обнаружите, что если у вас есть маршрут, подобный следующему:

user GET    /users/:id(.:format)      {:action=>"show", :controller=>"users"}

, у которого есть параметр (в данном случае идентификатор), вам обязательно потребуется для отображения ссылки в шаблоне или использования user_pathПеременные / user_url в контроллере с параметром тоже , поэтому в ваших шаблонах попробуйте найти:

<%= link_to "linkname", user_path %>

и заменить на

<%= link_to "linkname", user_path(@user) %>

или выполнить поиск в любом контроллере дляuser_path / user_url и замените их на user_path(@user) / user_url(@user) соответственно.

...