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
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 railstutorial.org
( 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