rails redirect_to format html sends response in js

23,551

Solution 1

Thanks to Bachan's answer, I could solve my issue this way:

  def redirect_search
    render :js => "window.location.href='"+buildings_path+"'" if params[:q].present?
  end

Thanks!

Solution 2

Try with

def redirect_search
     respond_to do |format|
            format.html {redirect_to buildings_path} if params[:q].present?
            format.js {render :js => "window.location.href='"+buildings_path+"'"} if params[:q].present?
     end
end

Solution 3

I think the problem is in the view which is doing the request

you are sending a JS request (ajax), so you should return a js.erb file and render new HTML using js

Share:
23,551

Related videos on Youtube

ndemoreau
Author by

ndemoreau

Updated on September 08, 2020

Comments

  • ndemoreau
    ndemoreau over 3 years

    I made a before_filter in some of my controller to redirect keyword searches to the parent controller

    It's very simple:

      before_filter :redirect_search
      def redirect_search
        redirect_to controller: "buildings", action: "index", format: "html" if params[:q].present?
      end
    

    Please note that the keyword_search is sent in "js" format

    Everything seems to work. When I look at the server, I can see that the buildings/index is run and that the page is rendered but nothing happens in the browser.

    In the browser's console I see this

    GET http://localhost:3000/buildings.html 200 OK
    

    It has the html page in the response body

    This means that buildings/index is run as html but then sent as js to the browser.

    Why is that so? How can I fix it?

    • Raghu
      Raghu over 10 years
      can you try adding a return at the end of redirect_search ?
    • techvineet
      techvineet over 10 years
      You mean you are using AJAX to go to keyword searches and there you are redirecting it to another url.html ?
  • ajbraus
    ajbraus over 10 years
    Wow is that ugly. Is there something missing here in Rails, or are we not doing things the Rails way to begin with?
  • Tashows
    Tashows over 3 years
    I actually needed that and this is the only way I could make it work, in 2021 with Rails 6. If anyone knows something better nowadays please comment!