I need a bit of help with converting routing from Rails 2 to Rails 3.
In app/views/layouts/application.html.erb, I have:
<%= link_to "Reports", reports_path %><br>
There is a ReportsController, and in app/views/reports/index.html.erb, I have this:
<%= link_to "Clients With Animals", :action => "getAnimals", :controller => "clients" %>
Then, in config/routes.rb, I have this (Rails 3)
match '/reports' => "reports#index"
match '/clients/getAnimals', to: "clients#getAnimals"
I get this error when I click on the “getAnimals” link on the reports page:
ActiveRecord::RecordNotFound in ClientsController#show
Couldn't find Client with id=getAnimals
I don’t want “getAnimals” to be the ID – I want it to be the action, instead.
How do I do that?
Assuming you also have a
resources :clientsentry, you want to make surematch '/clients/getAnimals', to: "clients#getAnimals"is above it (Rails will match whatever it hits first).However, the better way may be to put it in the resource: