How can I reload the current page in Ruby on Rails?

后端 未结 9 1511

I currently have a login popup in my header bar which is on every page in my website. I want to be able to reload the current page that the person is on after a successful

相关标签:
9条回答
  • 2020-12-28 12:22

    If you're looking for a way to get the page to refresh (typically redirect_to :back) with an XHR request, you don't have to look for a way to change the response type - just tell the page to reload with inline JS.

    format.js {render inline: "location.reload();" }

    Like Elena mentions, this should go in a respond_to block, like so:

    respond_to do |format|
      format.js {render inline: "location.reload();" }
    end
    
    0 讨论(0)
  • 2020-12-28 12:26

    Since Rails 5 (or maybe older versions), you have a request.referrer method. You simply redirect from controller to referrer and it opens the page where request came from.

    redirect_to request.referrer, notice: "You're being redirected"

    0 讨论(0)
  • 2020-12-28 12:27

    This syntax is what you want... works in Rails 6

      respond_to do |format|
        format.html { redirect_to request.referrer, notice: "User was successfully WHATEVER." }
      end
    
    0 讨论(0)
  • 2020-12-28 12:28

    In Rails 5 redirect_to :back is improved by:

        redirect_back(fallback_location: root_path)
    
    0 讨论(0)
  • 2020-12-28 12:28

    Rails 5 introduced alternative function:

    redirect_back(fallback_location: root_path)
    

    It redirect back whenever the HTTP_REFERER is known. Otherwise it redirects to the fallback_location.

    The redirect_to :back is deprecated in Rails 5.0 https://github.com/rails/rails/pull/22506 and removed since Rails 5.1

    0 讨论(0)
  • 2020-12-28 12:37

    For my application, I use redirect_to :back and it does the trick. However, I doubt this might have an error in a non general use case(s) (user came from a special page?) but i haven't found it so far in my app.

    0 讨论(0)
提交回复
热议问题