I’m trying to create an Order model for receiving orders, based on Michael Hartl’s User model in his tutorial.
I’ve created a basic Order page and Confirmation page, both in the Orders directory in View. I created tests for content, and when I run them, they show all sorts of errors, most having to do with this:
Failure/Error: before { visit root_path }
ActionView::Template::Error:
No route matches {:action=>"show", :controller=>"orders"}
Which I figured had to do with missing view (cause of “template”), but as I said, I’ve got those files. In my routes.rb file, I have the following:
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'
And my Order controller says this:
class OrdersController < ApplicationController
def show
@order = Order.find(params[:id])
end
def new
@order = Order.new
end
end
I’ve been combing through his tutorial to try to figure out what I’m doing wrong, but nothing’s working yet. Help? I’m very new to this.
Oh. Additionally confusing is that rspec claims it’s having this problem in a spec document that doesn’t try to follow either of those routes at all. (I’ve got three specs: one for static pages, one for the order model, and one for the order pages. The static page one is complaining about the action in the order model controller.)
Thanks, as requested, here’s my order pages spec:
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
Judging from the error you’re getting you’re missing an
:idin your route, so I suspect you’re not including the order as an argument when callingorder_pathin your specs (it would be helpful if you’d include the spec code).You should call the path for any member actions (
show,update,destroy) in your specs like this:(I’ll add more to this answer once you post the spec code.)