Creating multiple views for a database table .. routing not working

I have a single table in which I store favourite dishes of users. A user can have more than one entries in the table. I have generated a view to show all the entries in the table but how do I create a view to show just the list of users. I don’t have a table saving the users so I have to use DISTINCT to get the names of the users

I appraoched this by creating a new route /foodsIlike/user_list

get ‘/foodsIlike/user_list’ => ‘foodsIlike#user_list’, :as => ‘user_list’

instead of going to the user_list it tries to find a record with :id=user_list as that is what it would do to show one record

You need to mention :on => :collection on the route.

get ‘/foodsIlike/user_list’ => ‘foodsIlike#user_list’, :as => ‘user_list’, :on => :collection

The clue is in the question. You say that a user can have more than one entry in the table. What that implies is that you consider a user to be a significant object in your system, and that you have a number of them, therefore you should have a users table. Then to get the dishes for a user you would just use something like current_user.dishes and your problem would be solved.

ggest working right through a good tutorial such as ( which is free to use online). That tutorial includes the concept of users and will show you the basics of rails.


I’d also recommend reconsidering your schema like the other replies, but the bigger problem here is route order. You’re getting this behavior because you have the route that matches /foodsIlike/:id is before the one that matches /foodsIlike/user_list in config/routes.rb

–Matt Jones