How do I redirect to root - public/index.html?

78,809

Solution 1

What you want to do is not Rails compatible.

Rails is MVC, C for controller, V for view.

So its internals need both.

Ok, public/index.html is displayed by default but it's just because process is bypassed.

So, you could create a static controller with an index action and it's corresponding view (just copy/paste the content of your current public/index.htmlfile in it).

Then set:

root :to => "static#index"

And please, remove the public/index.html file :)

Solution 2

You can assign a named route to a static file by passing any non-empty string as :controller and the path to the file as the :action for the route:

Application.routes.draw do

  root :controller => 'static', :action => '/' 
  # or
  # root :controller => 'static', :action => '/public/index.html'

end

# elsewhere

redirect_to root_path # redirect to /

Assuming you have a public/index.html, this is what will be served.

Solution 3

on controller

 redirect_to root_path ## (will redirect to root '/')

Solution 4

route file:

     root 'main#index'

controller:

     class MainController < ApplicationController
       def index
         redirect_to '/index.html'
       end
     end

and using rails 4 controller action live this can behave like a single page application using the M & C with a twist on the V

Solution 5

routes.rb

...
root to: redirect('public/index.html')
...

This will redirect all request to '/', to 'public/index.html'.

Share:
78,809
geeky_monster
Author by

geeky_monster

Updated on January 13, 2020

Comments

  • geeky_monster
    geeky_monster over 4 years

    I wish to do a redirection to index.html in my application/public folder.

    def get_current_user
       @current_user = current_user
       if @current_user.nil?  
          redirect_to root_path
       end 
    end
    

    How do I achieve this ?

    I haven't modified the root in my routes.rb ( Its still commented )

     # root :to => "welcome#index"
    

    I get an error saying root_path is undefined.

    How do I modify routes.rb so that root_path points to public/index.html ?