![]() |
How do I redirect back to a page I'm currently on? - Printable Version +- 0Day Forums (https://0day.red) +-- Forum: Coding (https://0day.red/Forum-Coding) +--- Forum: Ruby (https://0day.red/Forum-Ruby) +--- Thread: How do I redirect back to a page I'm currently on? (/Thread-How-do-I-redirect-back-to-a-page-I-39-m-currently-on) |
How do I redirect back to a page I'm currently on? - leisureness30203 - 07-19-2023 In my users photo album page they see photos they have uploaded and each photo has a 'make default' link on it. When the user clicks `make default`, then the id of the photo is stored in the `photo_id` column of my profiles table. The issue is redirecting them back to: localhost:3000/settings/photo_gallery/:id Is there a way I can redirect back to the photo album using the id of the photo that has just been set as the default? Can Rails find what album I want to redirect to just by looking at the id of a photo, as a photo belongs to a photo album, and a photo album has many photos? I have the following tables in my database: * User(s): has one profile, has many PhotoAlbums * Profile(s): belongs to user * PhotoAlbum(s): belongs to user, has many photos * Photo(s): belongs to PhotoAlbum Controller action: def set_default_profile_photo photo = Profile.find_by_user_id(current_user.id) photo.photo_id = params[:photo_id] photo.save redirect_to "**HERE IS WHERE I'D LIKE TO REDIRECT TO THE PHOTOALBUM THE PHOTO IS IN**" flash[:success] = "Default photo set!" end My routes: users GET /users(.:format) {:action=>"index", :controller=>"users"} POST /users(.:format) {:action=>"create", :controller=>"users"} new_user GET /users/new(.:format) {:action=>"new", :controller=>"users"} edit_user GET /users/:id/edit(.:format) {:action=>"edit", :controller=>"users"} user GET /users/:id(.:format) {:action=>"show", :controller=>"users"} PUT /users/:id(.:format) {:action=>"update", :controller=>"users"} DELETE /users/:id(.:format) {:action=>"destroy", :controller=>"users"} sessions GET /sessions(.:format) {:action=>"index", :controller=>"sessions"} POST /sessions(.:format) {:action=>"create", :controller=>"sessions"} new_session GET /sessions/new(.:format) {:action=>"new", :controller=>"sessions"} edit_session GET /sessions/:id/edit(.:format) {:action=>"edit", :controller=>"sessions"} session GET /sessions/:id(.:format) {:action=>"show", :controller=>"sessions"} PUT /sessions/:id(.:format) {:action=>"update", :controller=>"sessions"} DELETE /sessions/:id(.:format) {:action=>"destroy", :controller=>"sessions"} passwords GET /passwords(.:format) {:action=>"index", :controller=>"passwords"} POST /passwords(.:format) {:action=>"create", :controller=>"passwords"} new_password GET /passwords/new(.:format) {:action=>"new", :controller=>"passwords"} edit_password GET /passwords/:id/edit(.:format) {:action=>"edit", :controller=>"passwords"} password GET /passwords/:id(.:format) {:action=>"show", :controller=>"passwords"} PUT /passwords/:id(.:format) {:action=>"update", :controller=>"passwords"} DELETE /passwords/:id(.:format) {:action=>"destroy", :controller=>"passwords"} profiles GET /profiles(.:format) {:action=>"index", :controller=>"profiles"} POST /profiles(.:format) {:action=>"create", :controller=>"profiles"} new_profile GET /profiles/new(.:format) {:action=>"new", :controller=>"profiles"} edit_profile GET /profiles/:id/edit(.:format) {:action=>"edit", :controller=>"profiles"} profile GET /profiles/:id(.:format) {:action=>"show", :controller=>"profiles"} PUT /profiles/:id(.:format) {:action=>"update", :controller=>"profiles"} DELETE /profiles/:id(.:format) {:action=>"destroy", :controller=>"profiles"} emails GET /emails(.:format) {:action=>"index", :controller=>"emails"} POST /emails(.:format) {:action=>"create", :controller=>"emails"} new_email GET /emails/new(.:format) {:action=>"new", :controller=>"emails"} edit_email GET /emails/:id/edit(.:format) {:action=>"edit", :controller=>"emails"} email GET /emails/:id(.:format) {:action=>"show", :controller=>"emails"} PUT /emails/:id(.:format) {:action=>"update", :controller=>"emails"} DELETE /emails/:id(.:format) {:action=>"destroy", :controller=>"emails"} root / {:controller=>"users", :action=>"new"} success /success(.:format) {:action=>"success", :controller=>"users"} login /login(.:format) {:action=>"new", :controller=>"sessions"} logout /logout(.:format) {:action=>"destroy", :controller=>"sessions"} reset_password /reset_password(.:format) {:action=>"new", :controller=>"passwords"} setup_new_password /setup_new_password(.:format) {:action=>"edit", :controller=>"passwords"} settings /settings(.:format) {:action=>"settings", :controller=>"users"} settings_account /settings/account(.:format) {:controller=>"users", :action=>"account"} settings_edit_profile /settings/edit_profile(.:format) {:controller=>"profiles", :action=>"edit_profile"} /:username(.:format) {:controller=>"users", :action=>"show"} change_password /change_password(.:format) {:action=>"change_password", :controller=>"users"} profile_photo_set_default /profile_photo/set_default(.:format) {:controller=>"photo_albums", :action=>"set_default_profile_photo"} album_photo_set_default /album_photo/set_default(.:format) {:controller=>"photo_albums", :action=>"set_default_album_photo"} photo_albums GET /settings/photo_gallery(.:format) {:action=>"index", :controller=>"photo_albums"} POST /settings/photo_gallery(.:format) {:action=>"create", :controller=>"photo_albums"} new_photo_album GET /settings/photo_gallery/new(.:format) {:action=>"new", :controller=>"photo_albums"} edit_photo_album GET /settings/photo_gallery/:id/edit(.:format) {:action=>"edit", :controller=>"photo_albums"} photo_album GET /settings/photo_gallery/:id(.:format) {:action=>"show", :controller=>"photo_albums"} PUT /settings/photo_gallery/:id(.:format) {:action=>"update", :controller=>"photo_albums"} DELETE /settings/photo_gallery/:id(.:format) {:action=>"destroy", :controller=>"photo_albums"} photos GET /settings/photo_gallery/photos(.:format) {:action=>"index", :controller=>"photos"} POST /settings/photo_gallery/photos(.:format) {:action=>"create", :controller=>"photos"} new_photo GET /settings/photo_gallery/photos/new(.:format) {:action=>"new", :controller=>"photos"} edit_photo GET /settings/photo_gallery/photos/:id/edit(.:format) {:action=>"edit", :controller=>"photos"} photo GET /settings/photo_gallery/photos/:id(.:format) {:action=>"show", :controller=>"photos"} PUT /settings/photo_gallery/photos/:id(.:format) {:action=>"update", :controller=>"photos"} DELETE /settings/photo_gallery/photos/:id(.:format) {:action=>"destroy", :controller=>"photos"} RE: How do I redirect back to a page I'm currently on? - shortcut332 - 07-19-2023 In Rails 5 it was introduced the function: redirect_back(fallback_location: root_path) It does redirect back whenever the `HTTP_REFERER` is known. Otherwise it redirects to the `fallback_location`. The `redirect_to :back` is deprecated and will be removed from Rails 5.1. RE: How do I redirect back to a page I'm currently on? - whick359386 - 07-19-2023 This is what you want: redirect_to request.referrer For further reference: [To see links please register here] RE: How do I redirect back to a page I'm currently on? - faustokbzwzmhrk - 07-19-2023 `redirect_to :back` worked for me but I want to see if this was the right choice [To see links please register here] RE: How do I redirect back to a page I'm currently on? - backcasts694661 - 07-19-2023 If you came from the photo_album page, you should be able to do: redirect_to :back Otherwise, you should be able to do a named route like: redirect_to photo_album_path(photo.album_id) # or whatever the association key is BTW, why do you have photo_albums mapping to photo_galleries? It's a lot less confusing if you named your resources and routes in a similiar manner. ie: if you wanted your route endpoints to use /photo_galleries you should name your resource PhotoGallery. RE: How do I redirect back to a page I'm currently on? - derrick644 - 07-19-2023 In one project we used the session for temporary storage, because `redirect_to :back` did not work for us. We had an `def new` where we set `session[:return_to] = request.referer` in the `def create` we added `redirect_to session[:return_to]`. I do not know anymore, why we could not use `redirect_to :back` |