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

2019-03-17 09:41发布

问题:

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 ?

回答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 :)



回答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.



回答3:

on controller

 redirect_to root_path (will redirect to root '/')


回答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