0

我正在尝试根据 Michael Hartl 在他的教程中的用户模型创建一个订单模型来接收订单。

我在 View 的 Orders 目录中创建了一个基本的订单页面和确认页面。我为内容创建了测试,当我运行它们时,它们会显示各种错误,大多数与此有关:

Failure/Error: before { visit root_path }
  ActionView::Template::Error:
      No route matches {:action=>"show", :controller=>"orders"}

我认为这与缺少视图(“模板”的原因)有关,但正如我所说,我有这些文件。在我的 routes.rb 文件中,我有以下内容:

resources :orders

root to: 'alpha#welcome'

match '/order', to: 'orders#new'

match '/about', to: 'alpha#about'
match '/contact', to: 'alpha#contact'
match '/confirmation', to: 'orders#show'

我的订单控制器这样说:

class OrdersController < ApplicationController
  def show
    @order = Order.find(params[:id])
  end

  def new
    @order = Order.new
  end
end

我一直在梳理他的教程,试图找出我做错了什么,但还没有任何效果。帮助?我对此很陌生。

哦。另外令人困惑的是,rspec 声称它在规范文档中存在此问题,而该规范文档根本不尝试遵循这些路线中的任何一条。(我有三个规范:一个用于静态页面,一个用于订单模型,一个用于订单页面。静态页面一是抱怨订单模型控制器中的操作。)

谢谢,根据要求,这是我的订单页面规范:

require 'spec_helper'

describe "Order Pages" do 

    subject { page }

    describe "order page" do
        before {visit order_path}

        it { should have_selector('h1', text: 'Order Below') }
        it { should have_selector('title', text: 'Order') }

    end

    describe "confirmation page" do
        let(:order) { FactoryGirl.create(:order) }
        before { visit confirmation_path(order) }

        it { should have_selector('h1',    text: 'Your order:') }
        it { should have_selector('title', text: 'Order') }
    end

end
4

1 回答 1

1

从你得到的错误来看,:id你的路线中缺少一个,所以我怀疑你在调用你的规范时没有将订单作为参数包括在内order_path(如果你包含规范代码会很有帮助)。

您应该在您的规范中调用任何成员操作 ( show, update, ) 的路径,如下所示:destroy

visit order_path(@order)

(一旦您发布规范代码,我将在此答案中添加更多内容。)

于 2012-08-21T22:47:46.170 回答