kapso
kapso

Reputation: 11903

Sinatra & Rails 3 routes issue

I have just setup Sinatra v1.1.0 inside my rails (v3.0.1) app. But I can't invoke any routes that are more than 1 level deep, meaning this works - http://localhost/customer/3,

but this one does not work - http://localhost/customer/3/edit and I get a "Routing Error"

Here's the Sinatra object

class CustomerApp < Sinatra::Base

  # this works
  get "/customer/:id" do
    "Hello Customer"
  end

  # this does NOT work
  get "/customer/:id/edit" do
    "Hello Customer"
  end

end

This is what I have in my rails routes.rb file -

match '/customer/(:string)' => CustomerApp 

I am guessing I need some magic in the routes file? What could be the problem?

Upvotes: 0

Views: 639

Answers (2)

oli-g
oli-g

Reputation: 303

In your routes file, you can specify the mapping this way:

mount CustomerApp, :at => '/customer'

Now, inside your sinatra application, you can specify your routes without the /customer part. Dont't forget to require your sinatra application somewhere (you can do it directly in the route file)

Upvotes: 3

John Topley
John Topley

Reputation: 115412

You need to add an additional route to match the different URL:

match '/customer/(:string)/edit' => CustomerApp

Upvotes: 1

Related Questions